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
LEN
Devuelve la longitud en caracteres de una cadena.
SELECT LEN(Nombre) AS NumCaracteres, Nombre FROM Usuario
SUBSTRING
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
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
LTRIM 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];
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
REVERSE
Invierte una cadena.
SELECT REVERSE(Nombre) AS erbmoN FROM Usuario
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]
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
REPLICATE
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
Para una información más detallada, no obstante, aconsejo acudir a la MSDN.
como puedo hacer para que una columna sea invisible ose ocultarlo, ejemplo no quiero que se vea el id de una tabla.
Gracias.