Você está na página 1de 12

Microsoft SQL Server tiene algunas funciones para trabajar con cadenas de caracteres.

Estas
son algunas:
- substring(cadena,inicio,longitud): devuelve una parte de la cadena especificada como
primer argumento, empezando desde la posicin especificada por el segundo argumento y de
tantos caracteres de longitud como indica el tercer argumento. Ejemplo:
select substring('Buenas tardes',8,6);
retorna "tardes".
- str(numero,longitud,cantidaddecimales): convierte nmeros a caracteres; el primer
parmetro indica el valor numrico a convertir, el segundo la longitud del resultado (debe ser
mayor o igual a la parte entera del nmero ms el signo si lo tuviese) y el tercero, la cantidad
de decimales. El segundo y tercer argumento son opcionales y deben ser positivos. String
significa cadena en ingls.
Ejemplo: se convierte el valor numrico "123.456" a cadena, especificando 7 de longitud y 3
decimales:
select str(123.456,7,3);
select str(-123.456,7,3);
retorna '-123.46';
Si no se colocan el segundo y tercer argumeno, la longitud predeterminada es 10 y la cantidad
de decimales 0 y se redondea a entero. Ejemplo: se convierte el valor numrico "123.456" a
cadena:
select str(123.456);
retorna '123';
select str(123.456,3);
retorna '123';
Si el segundo parmetro es menor a la parte entera del nmero, devuelve asteriscos (*).
Ejemplo: select str(123.456,2,3);
retorna "**".
- stuff(cadena1,inicio,cantidad,cadena2): inserta la cadena enviada como cuarto argumento,
en la posicin indicada en el segundo argumento, reemplazando la cantidad de caracteres
indicada por el tercer argumento en la cadena que es primer parmetro. Stuff significa
rellenar en ingls. Ejemplo:
select stuff('abcde',3,2,'opqrs');
retorna "abopqrse". Es decir, coloca en la posicin 2 la cadena "opqrs" y reemplaza 2
caracteres de la primer cadena.
Los argumentos numricos deben ser positivos y menor o igual a la longitud de la primera
cadena, caso contrario, retorna "null".

Si el tercer argumento es mayor que la primera cadena, se elimina hasta el primer carcter.
- len(cadena): retorna la longitud de la cadena enviada como argumento. "len" viene de
length, que significa longitud en ingls. Ejemplo:
select len('Hola');
devuelve 4.
- char(x): retorna un caracter en cdigo ASCII del entero enviado como argumento. Ejemplo:

select char(65);
retorna "A".
- left(cadena,longitud): retorna la cantidad (longitud) de caracteres de la cadena
comenzando desde la izquierda, primer caracter. Ejemplo:
select left('buenos dias',8);
retorna "buenos d".
- right(cadena,longitud): retorna la cantidad (longitud) de caracteres de la cadena
comenzando desde la derecha, ltimo caracter. Ejemplo:
select right('buenos dias',8);
retorna "nos dias".
-lower(cadena): retornan la cadena con todos los caracteres en minsculas. lower significa
reducir en ingls. Ejemplo:
select lower('HOLA ESTUDIAnte');
retorna "hola estudiante".
-upper(cadena): retornan la cadena con todos los caracteres en maysculas. Ejemplo:
select upper('HOLA ESTUDIAnte');
-ltrim(cadena): retorna la cadena con los espacios de la izquierda eliminados. Trim significa
recortar. Ejemplo:
select ltrim('

Hola

');

retorna "Hola ".


- rtrim(cadena): retorna la cadena con los espacios de la derecha eliminados. Ejemplo:
select rtrim('
retorna " Hola".

Hola

');

- replace(cadena,cadenareemplazo,cadenareemplazar): retorna la cadena con todas las


ocurrencias de la subcadena reemplazo por la subcadena a reemplazar. Ejemplo:
select replace('xxx.sqlserverya.com','x','w');
retorna "www.sqlserverya.com'.
- reverse(cadena): devuelve la cadena invirtiendo el order de los caracteres. Ejemplo:
select reverse('Hola');
retorna "aloH".
- patindex(patron,cadena): devuelve la posicin de comienzo (de la primera ocurrencia) del
patrn especificado en la cadena enviada como segundo argumento. Si no la encuentra
retorna 0. Ejemplos:
select patindex('%Luis%', 'Jorge Luis Borges');
retorna 7.
select patindex('%or%', 'Jorge Luis Borges');
retorna 2.
select patindex('%ar%', 'Jorge Luis Borges');
retorna 0.
- charindex(subcadena,cadena,inicio): devuelve la posicin donde comienza la subcadena en
la cadena, comenzando la bsqueda desde la posicin indicada por "inicio". Si el tercer
argumento no se coloca, la bsqueda se inicia desde 0. Si no la encuentra, retorna 0.
Ejemplos:
select charindex('or','Jorge Luis Borges',5);
retorna 13.
select charindex('or','Jorge Luis Borges');
retorna 2.
select charindex('or','Jorge Luis Borges',14);
retorna 0.
select charindex('or', 'Jorge Luis Borges');
retorna 0.
- replicate(cadena,cantidad): repite una cadena la cantidad de veces especificada. Ejemplo:
select replicate ('Hola',3);
retorna "HolaHolaHola";

- space(cantidad): retorna una cadena de espacios de longitud indicada por "cantidad", que
debe ser un valor positivo. Ejemplo:
select 'Hola'+space(1)+'que tal';
retorna "Hola que tal".

Funciones aritmticas

ABS(n): Devuelve el valor absoluto de n.

ROUND(m, n): Redondea el nmero m con el nmero de decimales


indicado en n, si no se indica n asume cero decimales.

SQRT(n): Devuelve la raz cuadrada del parmetro que se le pase.

POWER(m, n): Devuelve la potencia de m elevada el exponente


n.

Funciones de cadenas
LOWER(c): Devuelve la cadena c con todas las letras convertidas a
minsculas.
UPPER(c): Devuelve la cadena c con todas las letras convertidas a
maysculas.
LTRIM(c):

Elimina

RTRIM(c):

Elimina

los
los

espacios
espacios

por

la

por

la

izquierda

de

la

cadena

c.

derecha

de

la

cadena

c.

REPLACE(c, b, s): Sustituye en la cadena c el valor buscado b por el valor


indicado

en

s.

REPLICATE(c, n): Devuelve el valor de la cadena c el nmero de veces n


indicado.
LEFT(c, n): Devuelve n caracteres por la izquierda de la cadena c.
RIGHT(c, n): Devuelve n caracteres por la derecha de la cadena c.
SUBSTRING(c, m, n): Devuelve una sub-cadena obtenida de la cadena c, a
partir

de

la

posicin

tomando

caracteres.

SOUNDEX(c): Devuelve una cadena con la representacin fontica para


indexacin en ingls (algoritmo Soundex) de la cadena c.

Funciones de manejo de fechas

YEAR(d):

Devuelve

MONTH(d):
DAY(d):

el

ao

Devuelve

el

Devuelve

el

correspondiente

da

mes
del

de

de
mes

la

la
de

fecha
fecha

la

fecha

d.
d.
d.

DATEADD(f, n, d): Devuelve una fecha n periodos (das, meses aos, segn
lo indicado) superior a la fecha d. Si se le pasa un nmero n negativo,
devuelve una fecha n periodos inferior. De gran utilidad en consultas.

Funciones de conversin
Esta funciones suelen ser especficas de cada gestor de datos, ya que
cada SGBDR utiliza nombres diferentes para los distintos tipos de datos (aunque
existen similitudes se dan muchas diferencias).
Las funciones de conversin nos permiten cambiar valores de un tipo de datos a
otro. Por ejemplo si tenemos una cadena y sabemos que contiene una fecha,
podemos convertirla al tipo de datos fecha. As, por ejemplo:

En SQL Server tenemos funciones como CAST, CONVERT o PARSE,


que en funcin de lo que especifiquemos en sus parmetros convertirn
los datos en el tipo que le indiquemos. Ver funciones de conversin de
SQL Server.

En Oracle tenemos

funciones

como

TO_CHAR,

TO_DATE,

TO_NUMBER. Ver funciones de conversin de Oracle.

En MySQL solucionamos la mayor parte de las conversiones con la


funcin CAST. Ver conversiones en MySQL.

Algunos ejemplos simples

FUNCIONES S.Q.L.
S.Q.L.
Funciones SQL
Existen dos tipos de funciones:

Funciones a nivel de fila

Funciones a nivel de mltiples filas

Funciones a nivel de fila. Tipos:


o

Carcter

Nmero

Fecha

Conversin

Funciones a nivel de grupo. Tipos:


o

Manipulan grupos de filas y devuelven un resultado por


cada uno de ellos.

S.Q.L.
Funciones de Caracteres
Pueden ser de dos tipos:
o

Funciones de conversin

Funciones de manipulacin de caracteres

De manipulacin de caracteres:
o

CONCAT

SUBSTR

LENGTH

INSTR

LPAD Y RPAD

De conversin:
o

LOWER , UPPER e INITCAP

S.Q.L.
Funciones de conversin caracteres
LOWER: Convierte a minsculas.
UPPER: Convierte a maysculas.
INITCAP: Convierte la primera letra de cada palabra en maysculas, y
el resto en minscula.
Atencin: Usar una funcin de conversin dentro de la clusula
WHERE puede ser altamente ineficiente porque si la columna
afectada
forma
parte
de
un
ndice
ste
lo
desactiva, provocando un bajo rendimiento.

S.Q.L.
Funciones manipulacin caracteres
CONCAT: Concatena dos valores.
SUBSTR: Extrae una subcadena.
LENGTH: Devuelve la longitud de la cadena.
INSTR: Devuelve la posicin de un carcter o subcadena.
LPAD: Justifica a la derecha la cadena.
RPAD: Justifica a la izquierda la cadena.

S.Q.L.
Funciones Numricas
ROUND (columna | expresin, n)
o

Redondea a n posiciones decimales. Si se omite n, no se


redondea con decimales. Si n es negativo, los nmeros a la
izquierda
del
punto
decimal
se
redondean
a
decenas, centenas, ...

TRUNC (columna | expresin, n)


o

Trunca en la ensima posicin decimal. Si se omite n, sin


lugares decimales. Si n es negativo, los nmeros a la
izquierda del punto decimal se truncan a cero.

MOD (m, n)
o

Devuelve el resto de la divisin de m por n.

S.Q.L.
Ejemplos de funciones numricas
SQL> SELECT ROUND(45.923, 2), ROUND(45.923, 0), ROUND(45.923,
-1)
FROM SYS.DUAL;
Resultado: 45.92 46 50
SQL> SELECT TRUNC(45.923, 2), TRUNC(45,923), TRUNC(45.923, -1)
FROM SYS.DUAL;
Resultado: 45.92 45 40

S.Q.L.
Trabajando con fechas
Oracle almacena fechas en un formato numrico interno de 7 bytes:
o

Siglo, ao, mes, da, horas, minutos, segundos

El formato de fecha por defecto es DD-MON-YY


SYSDATE es una funcin que devuelve fecha y hora (pseudocolumna
del sistema)
DUAL es una tabla virtual de la bd., que puede ser usada para
inspeccionar SYSDATE.

S.Q.L.
Operadores aritmticos de fechas
Sumar o restar un nmero a/o de una fecha da por resultado una
fecha.
Restar dos fechas para encontrar la cantidad de das entre esas
fechas.
Sumar horas a una fecha dividiendo la cantidad de horas por 24.

S.Q.L.
Funciones de Fecha (I)
MONHTS_BETWEEN (fecha1, fecha2)
o

Nmero de meses entre dos fechas. El resultado puede ser


positivo o negativo.

ADD_MONTHS (fecha, n)
o

Aade n meses a fecha, segn calendario. N debe de ser


un nmero entero y puede ser negativo.

NEXT_DAY (fecha, caracter)


o

Devuelve la fecha del da especificado (carcter)


siguiente a fecha. Carcter puede ser un nmero
representando un da o una cadena de caracteres, p.ej.
FRIDAY.

S.Q.L.
Funciones de Fecha (II)
LAST_DAY (fecha)
o

Devuelve la fecha del ltimo da del mes que contiene


fecha.

ROUND (fecha [,fmt])


o

Cuando no se especifica ningn formato, devuelve la fecha


del primer da del mes contenido en fecha. Si fmt=YEAR,
encuentra el primer da del ao.

TRUNC (fecha [,fmt])


o

Devuelve la fecha con la porcin del da truncado en la

unidad especificada por el modelo de formato fmt. Si se


omite el formato, laf echa se trunca en el da ms prximo.

S.Q.L.
Ejemplos funciones de fecha
MONTS_BETWEEN (01-SEP-95, 11-JAN-94)
ADD_MONTHS(11-JAN-94, 6)

11-JUL-94

NEXT_DAY (01-SEP-95, FRIDAY)


LAST_DAY (01-SEP-95)

19.6774194

08-SEP-95

30-SEP-95

ROUND (25-JUL-95, MONTH)


ROUND (25-JUL-95, YEAR)
TRUNC (25-JUL-95, MONTH)
TRUNC (25-JUL-95, YEAR)

01-AUG-95
01-JAN-96
01-JUL-95
01-JAN-95

S.Q.L.
Formatos de Fecha (I)
YYYY / YEAR
o

Ao completo en nmero / Ao en letras

MM / MONTH
o

N del mes con dos dgitos / Nombre completo del mes

DY / DAY
o

Da de la semana en tres letras / Nombre completo del da

fm (fill mode)
o

Elimina los espacios en blanco de relleno o suprime ceros a


la izquierda

S.Q.L.
Formatos de Fecha (II)
Obtencin de la hora:
o

HH / HH12 / HH24

MI / SS / SSSS

Hora del da / Hora (1-12) / Hora (1-24)

Minutos / Segundos / Segundos despus de medianoche

AM o PM

Indicador del Meridiano

Sufijo SP / SPTH o THSP

Deletreo del nmero / Deletreo nmeros ordinales

Se permiten literales

S.Q.L.
Funciones de conversin (I)
La conversin de tipos de datos puede ser:

IMPLCITA: Realizada automticamente por Oracle

EXPLCITA: El usuario es quien la realiza

Conversin Implcita de datos

De VARCHAR2 o CHAR

a NUMBER

De VARCHAR2 o CHAR

a DATE

De NUMBER

De DATE

a VARCHAR2
a VARCHAR2

Estas conversiones se realizan por asignaciones, si Oracle 8


puede convertir el tipo de dato del valor utilizado en la
asignacin en el tipo de dato que era el objetivo de la
asignacin.

S.Q.L.
Funciones de conversin (II)
TO_CHAR (nmero | fecha [,fmt])
o

Convierte un nmero o fecha en una cadena de caracteres


VARCHAR2 con el modelo de formato fmt.

9: Representa un nmero

0: Fuerza a que se muestra el cero

$: Signo de dlar

L: Usa el signo de moneda local

.: Imprime el punto decimal

;: Imprime el indicador de millar

Para fechas, los fmt anteriores.

S.Q.L.
Funciones de conversin (III)
TO_NUMBER (char)
o

Convierte una cadena de caracteres con dgitos en un


nmero.

TO_DATE (char [,fmt])


o

Convierte una cadena de caracteres representando una


fecha en un valor de fecha segn el fmt especificado. Si se
omite el fmt, el formato es DD-MON-YY.

NVL (expr1, expr2)


o

Convierte un nulo (expr1) a un valor de tipo fecha, cadena


o nmero (expr2).

FUNCIONES CON CADENAS SQL


octubre 8, 2010

Funcin ASCII.
Descripcin: Retorna el valor del cdigo ASCII.
Sintaxis: ASCII (character)
Ejemplos:

SELECT ASCII('a') Resultado = 97

SELECT ASCII('b') Resultado = 98

SELECT ASCII('c') Resultado = 99

Funcin SPACE.
Descripcin: Retorna los espacios en SQL Query (Puedes especificar el tamao del especio).
Sintaxis:

SPACE ( integer)

Ejemplos:
SELECT (SQL) + SPACE(0) + (TUTORIALS)
Resultado = SQLTUTORIALS SELECT (SQL) + SPACE(1) + (TUTORIALS)
Resultado = SQL TUTORIALS

Funcin CHARINDEX. Descripcin: Retorna la posicin inicial de una cadena de


caracteres. Sintaxis: CHARINDEX ( string1, string2 [ , start_location ] ) Ejemplos: SELECT
CHARINDEX(SQL, Well organized understand SQL tutorial) Resultado = 27 SELECT
CHARINDEX(SQL, Well organized understand SQL tutorial, 20) Resultado = 27 SELECT
CHARINDEX(SQL, Well organized understand SQL tutorial, 30) Resultado = 0 (Because
the index is count from 30 and above)

Funcin REPLACE Descripcin: Reemplaza todas las ocurrencias de la cadena 2 y la


cadena 1 con la cadena 3. Sintaxis: REPLACE ( string1 , string2 , string3 ) Ejemplos:
SELECT REPLACE(All Function , All, SQL) Resultado = SQL

Function Funcin STUFF Descripcin: Elimina una longitud especfica de caracteres e


inserta una cadena en un ndice de inicio especifico. Sintaxis: STUFF ( string1 , startindex ,
length , string2 ) Ejemplo: SELECT STUFF(SqlTutorial, 4, 6, Function) Resultado =
SqlFunctional SELECT STUFF(GoodMorning, 5, 3, good) Resultado = Goodgoodning

Funcin LEFT Descripcin: Retorna la parte izquierda de una cadena con el nmero
especfico de caracteres. Sintaxis: LEFT ( string , integer) Ejemplo: SELECT
LEFT(TravelYourself, 6) Resultado = Travel SELECT LEFT(BeautyCentury,6) Resultado
= Beauty

Funcin RIGHT Descripcin: Retorna la parte derecha de una cadena con el nmero
especfico de caracteres. Sintaxis: RIGHT( string , integer) Ejemplo: SELECT
RIGHT(TravelYourself, 6) Resultado = urself SELECT RIGHT(BeautyCentury,6)
Resultado = Century Funcin REPLICATE Descripcin: Repite una cadena por un nmero
especfico de veces. Sintaxis: REPLICATE (string, integer) Ejemplo: SELECT
REPLICATE(Sql, 2) Resultado = SqlSql

Funcin SUBSTRING Descripcin: Retorna parte de una cadena. Sintaxis:


SUBSTRING ( string, startindex , length ) Ejemplo: SELECT SUBSTRING(SQLServer, 4, 3)
Resultado = Ser

Funcin LEN Descripcin: Retorna el nmero de caracteres de una cadena. -Sintaxis:


LEN( string) Ejemplo: SELECT LEN(SQLServer) Resultado = 9 Funcin REVERSE
Descripcin: Convierte a una cadena invertida. Sintaxis: REVERSE( string) Ejemplo:
SELECT REVERSE(SQLServer) Resultado = revreSLQS

Funcin UNICODE Descripcin: Retorna el valor entero del estndar unicode. Sintaxis:
UNICODE( char) Ejemplo: SELECT UNICODE(SqlServer) Resultado = 83 (it take first
character) SELECT UNICODE(S) Resultado = 83 Funcin LOWER Descripcin:
Convierte una cadena a minscula. Sintaxis: LOWER( string ) Ejemplo SELECT
LOWER(SQLServer) Resultado = sqlserver

Funcin UPPER Descripcin: Convierte una cadena a mayscula. Sintaxis:


UPPER( string ) Ejemplo: SELECT UPPER(sqlserver) Resultado = SQLSERVER
Funcin LTRIM Descripcin: Retorna una cadena despus de eliminar los espacios de la
izquierda. Sintaxis: LTRIM( string ) Ejemplo: SELECT LTRIM( sqlserver) Resultado =
sqlserver (Remove left side space or blanks)

Funcin RTRIM Descripcin: Retorna una cadena despus de eliminar los espacios de la
derecha. Sintaxis: RTRIM( string ) Ejemplo: SELECT RTRIM(SqlServer ) Resultado =
SqlServer (Remove right side space or blanks)

Você também pode gostar