SQL
Funciones de cadena
Buscar..
Introducción
Las funciones de cadena realizan operaciones en valores de cadena y devuelven valores numéricos o de cadena.
Mediante las funciones de cadena, puede, por ejemplo, combinar datos, extraer una subcadena, comparar cadenas o convertir una cadena a todos los caracteres en mayúscula o minúscula.
Sintaxis
- CONCAT (string_value1, string_value2 [, string_valueN])
- LTRIM (expresión_caracteres)
- RTRIM (expresión de caracteres)
- SUBSTRING (expresión, inicio, longitud)
- ASCII (expresión de caracteres)
- REPLICATE (string_expression, integer_expression)
- REVERSE (string_expression)
- SUPERIOR (expresión de caracteres)
- TRIM (cadena [caracteres de])
- STRING_SPLIT (cadena, separador)
- MATERIAL (expresión de caracteres, inicio, longitud, reemplazar con expresión)
- REPLACE (string_expression, string_pattern, string_replacement)
Observaciones
Referencia de funciones de cadena para Transact-SQL / Microsoft
Recortar espacios vacíos
El recorte se utiliza para eliminar el espacio de escritura al principio o al final de la selección
En MSSQL no hay un solo TRIM()
SELECT LTRIM(' Hello ') --returns 'Hello '
SELECT RTRIM(' Hello ') --returns ' Hello'
SELECT LTRIM(RTRIM(' Hello ')) --returns 'Hello'
MySql y Oracle
SELECT TRIM(' Hello ') --returns 'Hello'
Concatenar
En SQL (ANSI / ISO estándar), el operador para la concatenación de cadenas es ||
. Esta sintaxis es compatible con todas las bases de datos principales, excepto SQL Server:
SELECT 'Hello' || 'World' || '!'; --returns HelloWorld!
Muchas bases de datos admiten una función CONCAT
para unir cadenas:
SELECT CONCAT('Hello', 'World'); --returns 'HelloWorld'
Algunas bases de datos admiten el uso de CONCAT
para unir más de dos cadenas (Oracle no lo hace):
SELECT CONCAT('Hello', 'World', '!'); --returns 'HelloWorld!'
En algunas bases de datos, los tipos sin cadena deben ser convertidos o convertidos:
SELECT CONCAT('Foo', CAST(42 AS VARCHAR(5)), 'Bar'); --returns 'Foo42Bar'
Algunas bases de datos (por ejemplo, Oracle) realizan conversiones sin pérdida implícitas. Por ejemplo, un CONCAT
en un CLOB
y NCLOB
produce un NCLOB
. Un CONCAT
en un número y un varchar2
da como resultado un varchar2
, etc .:
SELECT CONCAT(CONCAT('Foo', 42), 'Bar') FROM dual; --returns Foo42Bar
Algunas bases de datos pueden usar el operador +
no estándar (pero en la mayoría, +
solo funciona con números):
SELECT 'Foo' + CAST(42 AS VARCHAR(5)) + 'Bar';
En SQL Server <2012, donde no se admite CONCAT
, +
es la única forma de unir cadenas.
Mayúsculas y minúsculas
SELECT UPPER('HelloWorld') --returns 'HELLOWORLD'
SELECT LOWER('HelloWorld') --returns 'helloworld'
Subcadena
La sintaxis es: SUBSTRING ( string_expression, start, length )
. Tenga en cuenta que las cadenas SQL son 1-indexadas.
SELECT SUBSTRING('Hello', 1, 2) --returns 'He'
SELECT SUBSTRING('Hello', 3, 3) --returns 'llo'
Esto se usa a menudo junto con la función LEN()
para obtener los últimos n
caracteres de una cadena de longitud desconocida.
DECLARE @str1 VARCHAR(10) = 'Hello', @str2 VARCHAR(10) = 'FooBarBaz';
SELECT SUBSTRING(@str1, LEN(@str1) - 2, 3) --returns 'llo'
SELECT SUBSTRING(@str2, LEN(@str2) - 2, 3) --returns 'Baz'
División
Divide una expresión de cadena usando un separador de caracteres. Tenga en cuenta que STRING_SPLIT()
es una función con valores de tabla.
SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');
Resultado:
value
-----
Lorem
ipsum
dolor
sit
amet.
Cosas
Rellena una cadena en otra, reemplazando 0 o más caracteres en una posición determinada.
Nota: la posición start
es 1-indexada (comienza la indexación en 1, no en 0).
Sintaxis:
STUFF ( character_expression , start , length , replaceWith_expression )
Ejemplo:
SELECT STUFF('FooBarBaz', 4, 3, 'Hello') --returns 'FooHelloBaz'
Longitud
servidor SQL
El LEN no cuenta el espacio al final.
SELECT LEN('Hello') -- returns 5
SELECT LEN('Hello '); -- returns 5
El DATALENGTH cuenta el espacio al final.
SELECT DATALENGTH('Hello') -- returns 5
SELECT DATALENGTH('Hello '); -- returns 6
Sin embargo, se debe tener en cuenta que DATALENGTH devuelve la longitud de la representación de bytes subyacente de la cadena, que depende, entre otras cosas, del conjunto de caracteres utilizado para almacenar la cadena.
DECLARE @str varchar(100) = 'Hello ' --varchar is usually an ASCII string, occupying 1 byte per char
SELECT DATALENGTH(@str) -- returns 6
DECLARE @nstr nvarchar(100) = 'Hello ' --nvarchar is a unicode string, occupying 2 bytes per char
SELECT DATALENGTH(@nstr) -- returns 12
Oráculo
Sintaxis: Longitud (char)
Ejemplos:
SELECT Length('Bible') FROM dual; --Returns 5
SELECT Length('righteousness') FROM dual; --Returns 13
SELECT Length(NULL) FROM dual; --Returns NULL
Ver también: LengthB, LengthC, Length2, Length4
Reemplazar
Sintaxis:
REPLACE(
Cadena para buscar ,
Cadena para buscar y reemplazar ,
Cadena para colocar en la cadena original )
Ejemplo:
SELECT REPLACE( 'Peter Steve Tom', 'Steve', 'Billy' ) --Return Values: Peter Billy Tom
IZQUIERDA DERECHA
La sintaxis es:
IZQUIERDA (expresión-cadena, entero)
DERECHA (string-expresión, entero)
SELECT LEFT('Hello',2) --return He
SELECT RIGHT('Hello',2) --return lo
Oracle SQL no tiene funciones IZQUIERDA y DERECHA. Se pueden emular con SUBSTR y LONGITUD.
SUBSTR (string-expresión, 1, entero)
SUBSTR (expresión-serie, longitud (expresión-serie) -integer + 1, entero)
SELECT SUBSTR('Hello',1,2) --return He
SELECT SUBSTR('Hello',LENGTH('Hello')-2+1,2) --return lo
MARCHA ATRÁS
La sintaxis es: REVERSE (expresión-cadena)
SELECT REVERSE('Hello') --returns olleH
REPRODUCIR EXACTAMENTE
La función REPLICATE
concatena una cadena consigo misma un número especificado de veces.
La sintaxis es: REPLICATE (expresión-cadena, entero)
SELECT REPLICATE ('Hello',4) --returns 'HelloHelloHelloHello'
REGEXP
Comprueba si una cadena coincide con una expresión regular (definida por otra cadena).
SELECT 'bedded' REGEXP '[a-f]' -- returns True
SELECT 'beam' REGEXP '[a-f]' -- returns False
Reemplazar la función en SQL Seleccionar y actualizar consulta
La función Reemplazar en SQL se usa para actualizar el contenido de una cadena. La llamada a la función es REPLACE () para MySQL, Oracle y SQL Server.
La sintaxis de la función Reemplazar es:
REPLACE (str, find, repl)
El siguiente ejemplo reemplaza las ocurrencias de South
con Southern
en la tabla Empleados:
Nombre de pila | Dirección |
---|---|
James | Sur de nueva york |
Juan | Sur de boston |
Miguel | Sur de san diego |
Seleccione Declaración:
Si aplicamos la siguiente función Reemplazar:
SELECT
FirstName,
REPLACE (Address, 'South', 'Southern') Address
FROM Employees
ORDER BY FirstName
Resultado:
Nombre de pila | Dirección |
---|---|
James | Sur de nueva york |
Juan | Boston del sur |
Miguel | Sur de san diego |
Declaración de actualización:
Podemos usar una función de reemplazo para realizar cambios permanentes en nuestra tabla a través del siguiente enfoque.
Update Employees
Set city = (Address, 'South', 'Southern');
Un enfoque más común es usar esto junto con una cláusula WHERE como esta:
Update Employees
Set Address = (Address, 'South', 'Southern')
Where Address LIKE 'South%';
Nombre de pila
BASE DE DATOS : SQL Server
La función PARSENAME devuelve la parte específica de la cadena dada (nombre del objeto). el nombre del objeto puede contener una cadena como el nombre del objeto, el nombre del propietario, el nombre de la base de datos y el nombre del servidor.
Más detalles MSDN: PARSENAME
Sintaxis
PARSENAME('NameOfStringToParse',PartIndex)
Ejemplo
Para obtener el nombre del objeto use el índice de parte 1
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',1) // returns `ObjectName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',1) // returns `Student`
Para obtener el nombre del esquema, use el índice de pieza 2
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',2) // returns `SchemaName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',2) // returns `school`
Para obtener el nombre de la base de datos utilice el índice de pieza 3
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',3) // returns `DatabaseName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',3) // returns `SchoolDatabase`
Para obtener el nombre del servidor use el índice de parte 4
SELECT PARSENAME('ServerName.DatabaseName.SchemaName.ObjectName',4) // returns `ServerName`
SELECT PARSENAME('[1012-1111].SchoolDatabase.school.Student',4) // returns `[1012-1111]`
PARSENAME devolverá nulo si la parte especificada no está presente en la cadena de nombre de objeto dada
INSTR
Devuelve el índice de la primera aparición de una subcadena (cero si no se encuentra)
Sintaxis: INSTR (cadena, subcadena)
SELECT INSTR('FooBarBar', 'Bar') -- return 4
SELECT INSTR('FooBarBar', 'Xar') -- return 0