Tratamiento de cadenas en SQL Server


En cualquier lenguaje de programación es tarea obligada poseer una manipulación de cadenas fluida.

Transact SQL proporciona una variedad bastante amplia de funciones para llevar a cabo tal tarea. Algunas de las operaciones que podemos realizar son concatenación, obtención de subcadenas, pasar a mayúsculas o minúsculas, eliminar espacios en blanco… incluso detectar la similitud entre expresiones.

A continuación veremos algunas de ellos y aplicaremos algunos ejemplos:

LOWER y UPPER

Devuelven un VARCHAR o un NVARCHAR con la expresión pasada como parámetro en minúsculas y en mayúsculas, respectivamente.

SELECT LOWER(Nombre) AS Minusculas FROM Usuario
SELECT UPPER(Nombre) AS Mayusculas FROM Usuario

090501LowerUpper

LEN

Devuelve la longitud en caracteres de una cadena.


SELECT LEN(Nombre) AS NumCaracteres, Nombre FROM Usuario

090502LenSUBSTRING

Recupera una subcadena de la expresión dada, indicando la posición inicial (empezando por la posición 0) y el número de caracteres a “leer”.
Es útil en combinación con LEN para mostrar secciones de texto. Por ejemplo, para eliminar los dos últimos caracteres de un nombre, escribiríamos lo que sigue:

SELECT SUBSTRING(Nombre, 0, LEN(Nombre)-2) AS SubCadena FROM Usuario

090503Substring
LEFT y RIGHT

Parecido a SUBSTRING. LEFT devuelve los N primeros caracteres de la cadena dada, mientras que RIGHT devolverá los N últimos.

SELECT LEFT(Nombre, LEN(Nombre)-2) AS [Left] FROM Usuario
SELECT RIGHT(Nombre, LEN(Nombre)-2) AS [Right] FROM Usuario

090504LeftRightLTRIM y RTRIM

Eliminan todos los espacios de la izquierda y de la derecha, respectivamente, de la expresión dada.

-- Elimina los espacios a la izquierda
SELECT LTRIM('     PRUEBA       ') AS [LTRIM];

-- Elimina los espacios a la derecha
SELECT RTRIM('     PRUEBA       ') AS [RTRIM];

-- Elimina los espacios a la derecha y a la izquierda
SELECT(LTRIM(RTRIM('     PRUEBA       '))) AS [LTRIM + RTRIM];

090505Trim
DIFFERENCE

Establece un rango de similitud entre dos expresiones, que varía entre 0 (ninguna similitud) y 4 (mucha similitud).

-- Mucha similitud, rango 4
SELECT DIFFERENCE('García', 'Gracia') AS Rango

-- Cierta similitud, rango 2
SELECT DIFFERENCE('López', 'Pérez') AS Rango

-- Ninguna similitud, rango 0
SELECT DIFFERENCE('New York City', 'Barcelona') AS Rango

090506Difference
REVERSE

Invierte una cadena.

SELECT REVERSE(Nombre) AS erbmoN FROM Usuario

090507Reverse
CHARINDEX

Busca la primera expresión en la segunda y devuelve la posición en la que se encuentra su primera aparición, comenzando desde la posición 0.

SELECT CHARINDEX('prueba', 'Esto es una prueba prueba') AS [CharIndex]

090508CharIndex
PATINDEX

Busca el patrón indicado en la primera expresión en la segunda y devuelve la posición en la que se encuentra su primera aparición, comenzando desde la posición 0. La diferencia con CHARINDEX es la posibilidad de utilizar patrones en lugar de expresiones.

SELECT Nombre, 'ua' AS Patron, PATINDEX('%ua%', Nombre) AS Posicion FROM Usuario

090509PatIndexREPLICATE

Repite la expresión dada como primer argumento un número de veces igual al indicado por el segundo argumento.

SELECT REPLICATE(Nombre + ' ', 2) AS Replica FROM Usuario

090510Replicate

Para una información más detallada, no obstante, aconsejo acudir a la MSDN.

Anuncios

One comment

  1. como puedo hacer para que una columna sea invisible ose ocultarlo, ejemplo no quiero que se vea el id de una tabla.
    Gracias.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s