Está en la página 1de 13

FUNCIONES DE CADENA

Funcin SPACE.
- Descripcin: Retorna los espacios en SQL Query (Puedes especificar el tamao
del espacio).
- 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 LEFT (izquierda)
- 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 (derecha)
- 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 (duplicar)
- Descripcin: Repite una cadena por un nmero especfico de veces.
- Sintaxis: REPLICATE (string, integer)
- Ejemplo:
SELECT REPLICATE(SQL, 2)
- Resultado = SqlSql
Funcin SUBSTRING (igual a la funcin extrae de Excel)
- Descripcin: Retorna parte de una cadena.
- Sintaxis: SUBSTRING ( string, startindex , length )
- Ejemplo:
SELECT SUBSTRING(SQLServer, 4, 3)
- Resultado = Ser

Funcin LEN (longitud)


- 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 LOWER (igual a la funcin minusc)
- Descripcin: Convierte una cadena a minscula.
- Sintaxis: LOWER( string )
- Ejemplo
SELECT LOWER(SQLServer)
- Resultado = sqlserver
Funcin UPPER (igual a mayusc de Excel)
- 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)

Select FOR XML


Clausula FOR XML.
A partir de la version 2000 SQL Server incluye la clausula FOR XML para la consultas.
Sin embargo, es a partir de la versin 2005 cuando se integra XML como tipo de dato
nativo.
Cuando especificamos la clausula FOR XML el resultado de la consulta es devuelto
en formato XML.
La clausula FOR XML admite los siguientes modos que representan el formato en el
que el XML es devuelto:

XML AUTO, el modo AUTO emplea los campos en la declaracin SELECT para
formar una jerarqua simple XML.

XML RAW, el modo RAW genera elementos nicos, los cuales se denominan
row, por cada fila retornada.

EXPLICIT, el modo EXPLICIT requiere un formato especfico que puede ser


mapeado en casi cualquier forma XML, y al mismo tiempo ser formulado por una sola
consulta SQL.
Adicionalmente, disponemos de dos opciones ms TYPE y ELEMENTS que determinan
el formato del XML resultante. Los vemos con ejemplos.

Un ejemplo de XML AUTO.

SELECT
CO_FAMILIA, FAMILIA
FROM
FAMILIAS
ORDER
BY FAMILIA
FOR
XML AUTO, TYPE

Obtendremos el siguiente resultado:

<
FAMILIAS CO_FAMILIA="1" FAMILIA="FAMILIA 1" />
<
FAMILIAS CO_FAMILIA="2" FAMILIA="FAMILIA 2" />
<
FAMILIAS CO_FAMILIA="3" FAMILIA="FAMILIA 3" />
<
FAMILIAS CO_FAMILIA="4" FAMILIA="FAMILIA 4" />

Podemos obtener el resultado como elementos de la siguiente forma:

SELECT

CO_FAMILIA, FAMILIA
FROM
FAMILIAS
FOR
XML AUTO, ELEMENTS

Obtendremos el siguiente resultado:

<
FAMILIAS>
<
CO_FAMILIA>1</CO_FAMILIA>
<
FAMILIA>FAMILIA 1</FAMILIA>
</
FAMILIAS>
<
FAMILIAS>
<
CO_FAMILIA>2</CO_FAMILIA>
<
FAMILIA>FAMILIA 2</FAMILIA>
</
FAMILIAS>

<
FAMILIAS>
<
CO_FAMILIA>3</CO_FAMILIA>
<
FAMILIA>FAMILIA 3</FAMILIA>
</
FAMILIAS>
<
FAMILIAS>
<
CO_FAMILIA>4</CO_FAMILIA>
<
FAMILIA>FAMILIA 4</FAMILIA>
</
FAMILIAS>

Ahora un ejemplo de XML RAW:

SELECT
CO_FAMILIA, FAMILIA
FROM
FAMILIAS
ORDER

BY FAMILIA
FOR
XML RAW , TYPE

Obtenemos el siguiente resultado:

<
row CO_FAMILIA="1" FAMILIA="FAMILIA 1" />
<
row CO_FAMILIA="2" FAMILIA="FAMILIA 2" />
<
row CO_FAMILIA="3" FAMILIA="FAMILIA 3" />
<
row CO_FAMILIA="4" FAMILIA="FAMILIA 4" />

Podemos obtener el resultado como elementos de la siguiente forma:

<
row>
<
CO_FAMILIA>1</CO_FAMILIA>
<
FAMILIA>FAMILIA 1</FAMILIA>
</

row>
<
row>
<
CO_FAMILIA>2</CO_FAMILIA>
<
FAMILIA>FAMILIA 2</FAMILIA>
</
row>
<
row>
<
CO_FAMILIA>3</CO_FAMILIA>
<
FAMILIA>FAMILIA 3</FAMILIA>
</
row>
<
row>
<
CO_FAMILIA>4</CO_FAMILIA>
<
FAMILIA>FAMILIA 4</FAMILIA>
</

row>

Tambin es posible especificar el nodo que queremos que muestre:

SELECT
CO_FAMILIA, FAMILIA
FROM
FAMILIAS
ORDER
BY FAMILIA
FOR
XML RAW ('FamiliasDeProductos') , TYPE

Devuelve el siguiente resultado:

<
FamiliasDeProductos CO_FAMILIA="1" FAMILIA="FAMILIA 1" />
<
FamiliasDeProductos CO_FAMILIA="2" FAMILIA="FAMILIA 2" />
<
FamiliasDeProductos CO_FAMILIA="3" FAMILIA="FAMILIA 3" />
<
FamiliasDeProductos CO_FAMILIA="4" FAMILIA="FAMILIA 4" />

Del mismo modo con la opcin ELEMENTS:

SELECT
CO_FAMILIA, FAMILIA
FROM
FAMILIAS
ORDER
BY FAMILIA
FOR
XML RAW ('FamiliasDeProductos') , ELEMENTS

Obtendremos el siguiente resultado:

<
FamiliasDeProductos>
<
CO_FAMILIA>1</CO_FAMILIA>
<
FAMILIA>FAMILIA 1</FAMILIA>
</
FamiliasDeProductos>
<
FamiliasDeProductos>
<
CO_FAMILIA>2</CO_FAMILIA>
<

FAMILIA>FAMILIA 2</FAMILIA>
</
FamiliasDeProductos>
<
FamiliasDeProductos>
<
CO_FAMILIA>3</CO_FAMILIA>
<
FAMILIA>FAMILIA 3</FAMILIA>
</
FamiliasDeProductos>
<
FamiliasDeProductos>
<
CO_FAMILIA>4</CO_FAMILIA>
<
FAMILIA>FAMILIA 4</FAMILIA>
</
FamiliasDeProductos>

Ahora un ejemplo con el formato XML EXPLICIT.

SELECT

1 AS TAG,

-- La primera columna debe tener el alias TAG

NULL AS PARENT, -- La segunda columna debe tener el alias PARENT


-- El resto de columnas deben tener el alias en el formato:
-- !!
CO_FAMILIA
as "FamiliaDeProductos!1!CODIGO_FAMILIA",
FAMILIA
as "FamiliaDeProductos!1!DESCRIPCION"
FROM
FAMILIAS
ORDER
BY FAMILIA
FOR
XML EXPLICIT

Obtenemos el siguiente resultado:

<
FamiliaDeProductos CODIGO_FAMILIA="1" DESCRIPCION="FAMILIA 1" />
<
FamiliaDeProductos CODIGO_FAMILIA="2" DESCRIPCION="FAMILIA 2" />
<
FamiliaDeProductos CODIGO_FAMILIA="3" DESCRIPCION="FAMILIA 3" />
<
FamiliaDeProductos CODIGO_FAMILIA="4" DESCRIPCION="FAMILIA 4" />

También podría gustarte