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

Referencia de funciones de cadena para MySQL

Referencia de funciones de cadena para PostgreSQL

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

MySQL 3.19

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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow