Tengo una columna SQL con una longitud de 6. Ahora quiero tomar solo el primer carácter de esa columna. ¿Hay alguna función de cadena en SQL para hacer esto?
fuente
Tengo una columna SQL con una longitud de 6. Ahora quiero tomar solo el primer carácter de esa columna. ¿Hay alguna función de cadena en SQL para hacer esto?
LEFT(colName, 1)
también hará esto, también. Es equivalente a SUBSTRING(colName, 1, 1)
.
Me gusta LEFT
, ya que me parece un poco más limpio, pero en realidad, no hay diferencia en ambos sentidos.
Yo prefiero:
SUBSTRING (my_column, 1, 1)
porque es la sintaxis estándar SQL-92 y, por lo tanto, es más portátil.
Estrictamente hablando, la versión estándar sería
SUBSTRING (my_column FROM 1 FOR 1)
El punto es que la transformación de uno a otro, por lo tanto, a cualquier variación de proveedor similar, es trivial.
PD: Hace poco me señalaron que las funciones en SQL estándar son deliberadamente contrarias, al tener listas de parámetros que no son los commalists convencionales, para que puedan identificarse fácilmente como estándar.
SUBSTRING ( MyColumn, 1 , 1 )
para el primer personaje y SUBSTRING ( MyColumn, 1 , 2 )
para los dos primeros.
SELECT SUBSTR(thatColumn, 1, 1) As NewColumn from student
Es simple de lograr por lo siguiente
DECLARE @SomeString NVARCHAR(20) = 'This is some string'
DECLARE @Result NVARCHAR(20)
Ya sea
SET @Result = SUBSTRING(@SomeString, 2, 3)
SELECT @Result
@Result = his
o
SET @Result = LEFT(@SomeString, 6)
SELECT @Result
@Result = This i
ENTRADA
STRMIDDLENAME
--------------
Aravind Chaterjee
Shivakumar
Robin Van Parsee
SELECT STRMIDDLENAME,
CASE WHEN INSTR(STRMIDDLENAME,' ',1,2) != 0 THEN SUBSTR(STRMIDDLENAME,1,1) || SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,1)+1,1)||
SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,2)+1,1)
WHEN INSTR(STRMIDDLENAME,' ',1,1) != 0 THEN SUBSTR(STRMIDDLENAME,1,1) || SUBSTR(STRMIDDLENAME,INSTR(STRMIDDLENAME,' ',1,1)+1,1)
ELSE SUBSTR(STRMIDDLENAME,1,1)
END AS FIRSTLETTERS
FROM Dual;
OUTPUT
STRMIDDLENAME FIRSTLETTERS
--------- -----------------
Aravind Chaterjee AC
Shivakumar S
Robin Van Parsee RVP
Si busca el primer carácter de cadena en cadena SQL
SELECT CHARINDEX('char', 'my char')
=> return 4
Seleccione los dos primeros caracteres en el campo seleccionado con Left(string,Number of Char in int)
SELECT LEFT(FName, 2) AS FirstName FROM dbo.NameMaster
LEFT(colName, length)
enSUBSTRING(colName, 1, length)
. Entonces no hay optimizaciones aquí, es solo una preferencia.