51
Funciones de cadena (Transact-SQL) Estas funciones escalares realizan una operación sobre un valor de cadena de entrada y devuelven un valor de cadena o un valor numérico: ASCII NCHAR SOUNDEX CHAR PATINDEX SPACE CHARINDEX QUOTENAME STR DIFFERENCE REPLACE STUFF LEFT REPLICATE SUBSTRING LEN REVERSE UNICODE LOWER RIGHT UPPER LTRIM RTRIM ASCII (Transact-SQL) Devuelve el valor de código ASCII del carácter situado más a la izquierda de una expresión de caracteres. Sintaxis ASCII ( character_expression ) Argumentos character_expression Es una expresión de tipo char o varchar. Tipos de valor devueltos int Ejemplos En el ejemplo siguiente se da por supuesto un juego de caracteres ASCII y se devuelve el valor ASCII y el carácter CHAR para cada carácter de la cadena Du monde entier . Copiar código SET TEXTSIZE 0 SET NOCOUNT ON -- Create the variables for the current character string position -- and for the character string. DECLARE @position int, @string char(15) -- Initialize the variables. SET @position = 1

Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Embed Size (px)

Citation preview

Page 1: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Funciones de cadena (Transact-SQL)Estas funciones escalares realizan una operación sobre un valor de cadena de entrada y devuelven un valor

de cadena o un valor numérico:

ASCII NCHAR SOUNDEX

CHAR PATINDEX SPACE

CHARINDEX QUOTENAME STR

DIFFERENCE REPLACE STUFF

LEFT REPLICATE SUBSTRING

LEN REVERSE UNICODE

LOWER RIGHT UPPER

LTRIM RTRIM  

ASCII (Transact-SQL)Devuelve el valor de código ASCII del carácter situado más a la izquierda de una expresión de caracteres.

 Sintaxis

ASCII ( character_expression )

 Argumentos

character_expression

Es una expresión de tipo char o varchar.

 Tipos de valor devueltos

int

 Ejemplos

En el ejemplo siguiente se da por supuesto un juego de caracteres ASCII y se devuelve el valor ASCII y el

carácter CHAR para cada carácter de la cadena Du monde entier.

Copiar código

SET TEXTSIZE 0

SET NOCOUNT ON

-- Create the variables for the current character string position

-- and for the character string.

DECLARE @position int, @string char(15)

-- Initialize the variables.

SET @position = 1

SET @string = 'Du monde entier'

WHILE @position <= DATALENGTH(@string)

BEGIN

SELECT ASCII(SUBSTRING(@string, @position, 1)),

CHAR(ASCII(SUBSTRING(@string, @position, 1)))

Page 2: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

SET @position = @position + 1

END

SET NOCOUNT OFF

GO

CHAR (Transact-SQL)Convierte un código ASCII int en un carácter.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

CHAR ( integer_expression )

 Argumentos

integer_expression

Es un entero entre 0 y 255. Devuelve NULL si la expresión de entero no se encuentra dentro de

dicho intervalo.

 Tipos de valor devueltos

char(1)

 Notas

CHAR se puede utilizar para insertar caracteres de control en cadenas de caracteres. En la siguiente tabla se

muestran algunos caracteres de control utilizados con frecuencia.

Carácter de control Valor

Tabulación char(9)

Avance de línea char(10)

Retorno de carro char(13)

 Ejemplos

A. Usar ASCII y CHAR para imprimir los valores ASCII de una cadena

En el siguiente ejemplo se imprimen el valor y el carácter ASCII de cada carácter de la cadena New Moon.

Copiar código

SET TEXTSIZE 0

-- Create variables for the character string and for the current

-- position in the string.

DECLARE @position int, @string char(8)

-- Initialize the current position and the string variables.

SET @position = 1

SET @string = 'New Moon'

WHILE @position <= DATALENGTH(@string)

BEGIN

SELECT ASCII(SUBSTRING(@string, @position, 1)),

CHAR(ASCII(SUBSTRING(@string, @position, 1)))

SET @position = @position + 1

Page 3: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

END

GO

CHARINDEX (Transact-SQL)Busca el valor expression2 de expression1 y devuelve su posición inicial si se localiza. La búsqueda se inicia

en start_location.

 Sintaxis

CHARINDEX ( expression1 ,expression2 [ , start_location ] )

 Argumentos

expression1

Es una expresión de caracteres que contiene la secuencia que se va a buscar. expression1 tiene un

límite de 8.000 caracteres.

expression2

Es la expresión de caracteres que se va a buscar.

start_location

Es un entero o expresión bigint donde se inicia la búsqueda. Si no se especifica el parámetro

start_location o bien es un número negativo o es igual a cero, la búsqueda comienza al principio de

expression2.

 Tipos de valor devueltos

bigint si expression2 es de tipo varchar(max), nvarchar(max) o varbinary(max); en caso contrario, int.

 Notas

Si uno de los parámetros expression1 o expression2 es de tipo de datos Unicode (nvarchar o nchar) y el

otro no, la expresión que no sea de tipo Unicode se convierte en Unicode. CHARINDEX no se puede usar con

los tipos de datos text, ntext o image.

Si expression1 o expression2 son de tipo NULL, CHARINDEX devuelve NULL cuando el nivel de compatibilidad

de la base de datos es 70 o superior. Si el nivel de compatibilidad de la base de datos es 65 o inferior,

CHARINDEX devuelve NULL sólo cuando los dos parámetros expression1 y expression2 son NULL.

Si expression1 no se encuentra en expression2, CHARINDEX devuelve 0.

CHARINDEX realiza comparaciones basadas en la intercalación de la entrada. Para realizar una comparación

de una intercalación especificada, puede utilizar COLLATE para aplicar una intercalación explícita a la

entrada.

La posición inicial devuelta es de base 1, no de base 0.

 Ejemplos

El siguiente ejemplo devuelve la posición en la que empieza la secuencia de caracteres bicycle en la

columna DocumentSummary de la tabla Document.

Copiar código

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +

' components of your bicycle.'

SELECT CHARINDEX('bicycle', @document)

Page 4: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

GO

Éste es el conjunto de resultados.

Copiar código

-----------

48

En el siguiente ejemplo se utiliza el parámetro opcional start_location para empezar la búsqueda de vital

en el quinto carácter de la columna DocumentSummary.

Copiar código

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +

' components of your bicycle.'

SELECT CHARINDEX('vital', @document, 5)

GO

Éste es el conjunto de resultados.

Copiar código

-----------

16

(1 row(s) affected)

En el siguiente ejemplo se muestra el conjunto de resultados cuando el parámetro expression1 no se

encuentra en expression2.

Copiar código

DECLARE @document varchar(64)

SELECT @document = 'Reflectors are vital safety' +

' components of your bicycle.'

SELECT CHARINDEX('bike', @document)

GO

Éste es el conjunto de resultados.

Copiar código

-----------

0

(1 row(s) affected)

En el siguiente ejemplo se realiza una búsqueda con distinción entre mayúsculas y minúsculas de la cadena

'TEST' en 'Das jst ein Test'.

Copiar código

USE tempdb;

Page 5: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

GO

--perform a case sensitive search

SELECT CHARINDEX ( 'TEST',

'Das ist ein Test'

COLLATE Latin1_General_CS_AS)

Éste es el conjunto de resultados.

Copiar código

-----------

0

En el siguiente ejemplo se realiza una búsqueda con distinción entre mayúsculas y minúsculas de la cadena

'Test' en 'Das jst ein Test'.

Copiar código

USE tempdb;

GO

SELECT CHARINDEX ( 'Test',

'Das ist ein Test'

COLLATE Latin1_General_CS_AS)

Éste es el conjunto de resultados.

Copiar código

-----------

13

En el siguiente ejemplo se realiza una búsqueda sin distinción entre mayúsculas y minúsculas de la cadena

'TEST' en 'Das jst ein Test'.

Copiar código

USE tempdb;

GO

SELECT CHARINDEX ( 'Test',

'Das ist ein Test'

COLLATE Latin1_General_CI_AS)

GO

DIFFERENCE (Transact-SQL)Devuelve un valor entero que indica la diferencia entre los valores de SOUNDEX de dos expresiones de

caracteres.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

DIFFERENCE ( character_expression , character_expression )

 Argumentos

character_expression

Page 6: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Es una expresión de tipo char o varchar. character_expression puede ser también de tipo text; no

obstante, sólo los primeros 8.000 bytes son significativos.

 Tipos de valor devueltos

int

 Notas

El entero devuelto es el número de caracteres de los valores de SOUNDEX que son iguales. El valor devuelto

puede oscilar entre 0 y 4, donde 0 indica una similitud escasa o inexistente, y 4 indica una elevada similitud

o los mismos valores.

 Ejemplos

En la primera parte del ejemplo siguiente, se comparan los valores de SOUNDEX de dos cadenas muy

similares, y DIFFERENCE devuelve un valor de 4. En la segunda parte, se comparan los valores de

SOUNDEX de dos cadenas muy diferentes, y DIFFERENCE devuelve un valor de 0.

Copiar código

USE AdventureWorks;

GO

-- Returns a DIFFERENCE value of 4, the least possible difference.

SELECT SOUNDEX('Green'), SOUNDEX('Greene'), DIFFERENCE('Green','Greene');

GO

-- Returns a DIFFERENCE value of 0, the highest possible difference.

SELECT SOUNDEX('Blotchet-Halls'), SOUNDEX('Greene'),

DIFFERENCE('Blotchet-Halls', 'Greene');

GO

LEFT (Transact-SQL)Devuelve la parte izquierda de una cadena de caracteres con el número de caracteres especificado.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

LEFT ( character_expression , integer_expression )

 Argumentos

character_expression

Es una expresión de datos de caracteres o binarios. character_expression puede ser una constante,

variable o columna. El tipo de datos de character_expression puede ser cualquiera, excepto text y

ntext, que se pueda convertir implícitamente a varchar y nvarchar. De lo contrario, utilice la

función CAST para convertir character_expression explícitamente.

integer_expression

Es un entero positivo que especifica cuántos caracteres de character_expression se van a devolver.

Si integer_expression es negativo, se devuelve un error. Si integer_expression es del tipo bigint y

contiene un valor grande, character_expression debe ser de un tipo de datos de valor grande como

varchar(max).

 Tipos de valor devueltos

Devuelve varchar cuando character_expression es de un tipo de datos de caracteres no Unicode.

Page 7: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Devuelve nvarchar cuando character_expression es de un tipo de datos de caracteres Unicode.

 Notas

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para obtener más información acerca

de los niveles de compatibilidad, vea sp_dbcmptlevel (Transact-SQL).

 Ejemplos

A. Utilizar LEFT con una columna

En el ejemplo siguiente se devuelven los cinco caracteres situados más a la izquierda de cada nombre de

producto.

Copiar código

USE AdventureWorks;

GO

SELECT LEFT(Name, 5)

FROM Production.Product

ORDER BY ProductID;

GO

B. Utilizar LEFT con una cadena de caracteres

En el ejemplo siguiente se utiliza LEFT para devolver los dos caracteres situados más a la izquierda de la

cadena de caracteres abcdefg.

Copiar código

SELECT LEFT('abcdefg',2)

GO

LEN (Transact-SQL)Devuelve el número de caracteres de la expresión de cadena especificad, exluidos los espacios en blanco

finales.

Nota:

Para devolver el número de bytes usado para representar una expresión, utilice la función DATALENGTH.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

LEN ( string_expression )

 Argumentos

string_expression

Es la cadena expresión que se va a evaluar. string_expression puede ser una constante, una

variable o una columna de datos binarios o de caracteres.

 Tipos de valor devueltos

bigint si expression es de los tipos de datos varchar(max), nvarchar(max) o varbinary(max); en caso

contrario, int.

 Ejemplos

Page 8: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

El ejemplo siguiente selecciona el número de caracteres y los datos en FirstName para las personas que

se encuentran en Australia.

Copiar código

USE AdventureWorks;

GO

SELECT LEN(FirstName) AS Length, FirstName, LastName

FROM Sales.vIndividualCustomer

WHERE CountryRegionName = 'Australia';

GO

LOWER (Transact-SQL)Devuelve una expresión de caracteres después de convertir en minúsculas los datos de caracteres en

mayúsculas.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

LOWER ( character_expression )

 Argumentos

character_expression

Es una expresión de datos binarios o de caracteres. character_expression puede ser una constante,

una variable o una columna. character_expression debe ser de un tipo de datos que se pueda

convertir implícitamente a varchar. De lo contrario, utilice CAST para convertir

character_expression explícitamente.

 Tipos de valor devueltos

varchar o bien nvarchar

 Ejemplos

En este ejemplo se utiliza la función LOWER y la función UPPER, y se anida la función UPPER en la función

LOWER al seleccionar títulos de libros cuyos precios sean entre 11$ y 20$.

Copiar código

USE AdventureWorks;

GO

SELECT LOWER(SUBSTRING(Name, 1, 20)) AS Lower,

UPPER(SUBSTRING(Name, 1, 20)) AS Upper,

LOWER(UPPER(SUBSTRING(Name, 1, 20))) As LowerUpper

FROM Production.Product

WHERE ListPrice between 11.00 and 20.00;

GO

LTRIM (Transact-SQL)Devuelve una expresión de caracteres tras quitar todos los espacios iniciales en blanco.

Convenciones de sintaxis de Transact-SQL

Page 9: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

 Sintaxis

LTRIM ( character_expression )

 Argumentos

character_expression

Es una expresión de datos binarios o de caracteres. character_expression puede ser una constante,

una variable o una columna. character_expression debe ser un tipo de datos, excepto text, ntext y

image, implícitamente convertibles a varchar. De lo contrario, utilice CAST para convertir

character_expression explícitamente.

 Tipo de valor devuelto

varchar o bien nvarchar

 Notas

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para obtener más información acerca

de los niveles de compatibilidad, vea sp_dbcmptlevel (Transact-SQL).

 Ejemplos

En el siguiente ejemplo se utiliza LTRIM para quitar espacios iniciales de una variable de caracteres.

Copiar código

DECLARE @string_to_trim varchar(60)

SET @string_to_trim = ' Five spaces are at the beginning of this

string.'

SELECT 'Here is the string without the leading spaces: ' +

LTRIM(@string_to_trim)

GO

NCHAR (Transact-SQL)Devuelve el carácter Unicode correspondiente al código entero dado, tal como se define en el estándar

Unicode.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

NCHAR ( integer_expression )

 Argumentos

integer_expression

Es un número entero positivo comprendido entre 0 y 65535. Si se especifica un valor fuera de este

intervalo, se devuelve NULL.

 Tipos de valor devueltos

nchar(1)

 Ejemplos

A. Utilizar NCHAR y UNICODE

En el siguiente ejemplo se utilizan las funciones UNICODE y NCHAR para imprimir el valor UNICODE y

NCHAR (carácter Unicode) del segundo carácter de la cadena de caracteres København, y para imprimir el

segundo carácter real, ø.

Page 10: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Copiar código

DECLARE @nstring nchar(8)

SET @nstring = N'København'

SELECT UNICODE(SUBSTRING(@nstring, 2, 1)),

NCHAR(UNICODE(SUBSTRING(@nstring, 2, 1)))

GO

Éste es el conjunto de resultados.

Copiar código

----------- -

248 ø(1 row(s) affected)

B. Utilizar SUBSTRING, UNICODE, CONVERT y NCHAR

En el siguiente ejemplo se utilizan las funciones SUBSTRING, UNICODE, CONVERT y NCHAR para imprimir

el número de carácter, el carácter Unicode y el valor de UNICODE para cada uno de los caracteres de la

cadena København.

Copiar código

-- The @position variable holds the position of the character currently

-- being processed. The @nstring variable is the Unicode character

-- string to process.

DECLARE @position int, @nstring nchar(9)

-- Initialize the current position variable to the first character in

-- the string.

SET @position = 1

-- Initialize the character string variable to the string to process.

-- Notice that there is an N before the start of the string. This

-- indicates that the data following the N is Unicode data.

SET @nstring = N'København'

-- Print the character number of the position of the string you are at,

-- the actual Unicode character you are processing, and the UNICODE

-- value for this particular character.

PRINT 'Character #' + ' ' + 'Unicode Character' + ' ' + 'UNICODE Value'

WHILE @position <= DATALENGTH(@nstring)

BEGIN

SELECT @position,

NCHAR(UNICODE(SUBSTRING(@nstring, @position, 1))),

CONVERT(NCHAR(17), SUBSTRING(@nstring, @position, 1)),

UNICODE(SUBSTRING(@nstring, @position, 1))

SELECT @position = @position + 1

END

GO

PATINDEX (Transact-SQL)

Page 11: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Devuelve la posición inicial de la primera repetición de un patrón en la expresión especificada, o ceros si el

patrón no se encuentra, en todos los tipos de datos de texto y caracteres. Para obtener más información, vea

Coincidencias de patrón en condiciones de búsqueda.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

PATINDEX ( '%pattern%' , expression )

 Argumentos

pattern

Es una cadena literal. Se pueden incluir caracteres comodín, aunque el carácter % debe preceder y

seguir a pattern (excepto cuando se busca el primer o el último carácter). pattern es una expresión

de la categoría de tipo de datos de cadena de caracteres.

expression

Es una expresión, normalmente una columna en la que se busca el patrón especificado. expression

es de la categoría de tipo de datos de cadena de caracteres.

 Tipos de valor devueltos

bigint si expression es de los tipos de datos varchar(max) o nvarchar(max); en caso contrario, int.

 Notas

Si pattern o expression son NULL, PATINDEX devolverá NULL cuando el nivel de compatibilidad de la base de

datos sea 70. Si el nivel de compatibilidad es 65 o anterior, PATINDEX sólo devolverá NULL cuando ambos,

pattern y expression, sean NULL.

PATINDEX realiza comparaciones basadas en la intercalación de la entrada. Para realizar una comparación de

una intercalación especificada, puede utilizar COLLATE para aplicar una intercalación explícita a la entrada.

 Ejemplos

A. Utilizar un patrón con PATINDEX

En el siguiente ejemplo se busca la posición en que comienza el patrón ensure en una fila específica de la

columna DocumentSummary de la tabla Document.

Copiar código

USE AdventureWorks;

GO

SELECT PATINDEX('%ensure%',DocumentSummary)

FROM Production.Document

WHERE DocumentID = 3;

GO

Éste es el conjunto de resultados.

Copiar código

-----------

64

(1 row(s) affected)

Page 12: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Si no restringe las filas en las que buscar con la cláusula WHERE, la consulta devolverá todas las filas de la

tabla e indicará valores distintos de cero para las filas en las que se haya encontrado el patrón y cero para el

resto.

B. Utilizar caracteres comodín con PATINDEX

En el ejemplo siguiente se utilizan caracteres comodín para encontrar la posición en la que comienza el

patrón en_ure en una fila específica de la columna DocumentSummary de la tabla Document, donde el

carácter de subrayado es un comodín que representa cualquier carácter.

Copiar código

USE AdventureWorks;

GO

SELECT PATINDEX('%en_ure%', DocumentSummary)

FROM Production.Document

WHERE DocumentID = 3;

GO

QUOTENAME (Transact-SQL)Devuelve una cadena Unicode con los delimitadores agregados para convertirla en un identificador

delimitado válido de Microsoft SQL Server.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

QUOTENAME ( 'character_string' [ , 'quote_character' ] )

 Argumentos

'character_string'

Es una cadena de datos de caracteres Unicode. character_string es sysname y está limitado a 128

caracteres. Las entradas mayores de 128 caracteres devuelven NULL.

'quote_character'

Es una cadena de un solo carácter que se utiliza como delimitador. Puede ser una comilla simple ('),

un corchete izquierdo o derecho ([ ]) o una comilla doble ("). Si no se especifica quote_character, se

utilizarán corchetes.

 Tipos de valor devueltos

nvarchar(258)

 Ejemplos

En el siguiente ejemplo se toma la cadena de caracteres abc[]def y se utilizan los caracteres [ y ] para

crear un identificador delimitado de SQL Server válido.

Copiar código

SELECT QUOTENAME('abc[]def')

REPLACE (Transact-SQL)Reemplaza todas las instancias de un valor de cadena especificado por otro valor de cadena.

Convenciones de sintaxis de Transact-SQL

Page 13: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

 Sintaxis

REPLACE ( string_expression , string_pattern , string_replacement )

 Argumentos

string_expression

Es la expresión de cadena en la que se va a buscar. string_expression puede tener un tipo de datos

de carácter o binario.

string_pattern

Es la subcadena que se va a buscar. string_pattern puede ser de un tipo de datos de carácter o

binario. string_pattern no puede ser una cadena vacía (").

string_replacement

Cadena de reemplazo. string_replacement puede tener un tipo de datos de carácter o binario.

 Tipos de valor devueltos

Devuelve nvarchar si uno de los argumentos de entrada tiene el tipo de datos nvarchar; de lo contrario,

REPLACE devuelve varchar.

Devuelve NULL si alguno de los argumentos es NULL.

 Notas

REPLACE realiza comparaciones basándose en la intercalación de la entrada. Para realizar una comparación

en la intercalación especificada, puede utilizar COLLATE para aplicar una intercalación explícita a la entrada.

 Ejemplos

El siguiente ejemplo reemplaza la cadena cde de abcdefghi por xxx.

Copiar código

SELECT REPLACE('abcdefghicde','cde','xxx');

GO

Éste es el conjunto de resultados.

Copiar código

------------

abxxxfghixxx

(1 row(s) affected)

El siguiente ejemplo utiliza la función COLLATE.

Copiar código

SELECT REPLACE('Das ist ein Test' COLLATE Latin1_General_BIN,

'Test', 'desk' );

GO

REPLICATE (Transact-SQL)Repite un valor de cadena un número especificado de veces.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

REPLICATE ( string_expression ,integer_expression )

Page 14: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

 Argumentos

string_expression

Es una expresión de una cadena de caracteres o tipo de datos binario. string_expression puede ser

un dato de carácter o binario.

Nota:

Si string_expression no es de tipo varchar(max) o nvarchar(max), REPLICATE trunca el valor devuelto en 8.000 bytes. Para devolver valores mayores de 8.000 bytes, string_expression debe convertirse explícitamente al tipo de datos de valores grandes apropiado.

integer_expression

Es una expresión de cualquier tipo entero, incluido bigint. Si integer_expression es negativo, se

devuelve NULL.

 Tipos de valor devueltos

Devuelve el mismo tipo que string_expression.

 Notas

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para obtener más información, vea

sp_dbcmptlevel.

 Ejemplos

A. Usar REPLICATE

El ejemplo siguiente replica un carácter 0 cuatro veces delante de un código de línea de producción en la

base de datos AdventureWorks.

Copiar código

USE AdventureWorks

GO

SELECT [Name]

, REPLICATE('0', 4) + [ProductLine] AS 'Line Code'

FROM [Production].[Product]

WHERE [ProductLine] = 'T'

ORDER BY [Name]

GO

REVERSE (Transact-SQL)Devuelve un valor de cadena invertido.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

REVERSE ( string_expression )

 Argumentos

string_expression

string_expression es una expresión de una cadena o un tipo de datos binario. string_expression

puede ser una constante, una variable o una columna de caracteres o datos binarios.

 Tipos de valor devueltos

Page 15: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

varchar o bien nvarchar

 Notas

string_expression debe ser de un tipo de datos que se pueda convertir implícitamente a varchar. De lo

contrario, utilice CAST para convertir string_expression explícitamente.

 Ejemplos

En el ejemplo siguiente se devuelven los nombres de todos los contactos con los caracteres invertidos.

Copiar código

USE AdventureWorks;

GO

SELECT FirstName, REVERSE(FirstName) AS Reverse

FROM Person.Contact

WHERE ContactID < 5

ORDER BY FirstName;

GO

RIGHT (Transact-SQL)Devuelve la parte derecha de una cadena de caracteres con el número de caracteres especificado.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

RIGHT ( character_expression , integer_expression )

 Argumentos

character_expression

Es una expresión de datos de caracteres o binarios. character_expression puede ser una constante,

variable o columna. El tipo de datos de character_expression puede ser cualquiera, excepto text y

ntext, que se pueda convertir implícitamente a varchar y nvarchar. De lo contrario, utilice la

función CAST para convertir character_expression explícitamente.

integer_expression

Es un entero positivo que especifica cuántos caracteres de character_expression se devolverán. Si

integer_expression es negativo, se devuelve un error. Si integer_expression es del tipo bigint y

contiene un valor grande, character_expression debe ser de un tipo de datos de valor grande como

varchar(max).

 Tipos de valor devueltos

Devuelve varchar cuando character_expression es de un tipo de datos de caracteres no Unicode.

Devuelve nvarchar cuando character_expression es de un tipo de datos de caracteres Unicode.

 Notas

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para obtener más información, vea

sp_dbcmptlevel (Transact-SQL).

 Ejemplos

En el ejemplo siguiente se devuelven los cinco caracteres situados más a la derecha del nombre de cada

contacto.

Page 16: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Copiar código

USE AdventureWorks;

GO

SELECT RIGHT(FirstName, 5) AS 'First Name'

FROM Person.Contact

WHERE ContactID < 5

ORDER BY FirstName;

GO

RTRIM (Transact-SQL)Devuelve una cadena de caracteres después de truncar todos los espacios en blanco finales.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

RTRIM ( character_expression )

 Argumentos

character_expression

Es una expresión de datos de caracteres. character_expression puede ser una constante, una

variable o una columna de datos binarios o de caracteres.

character_expression debe ser de un tipo de datos que se pueda convertir implícitamente a

varchar. De lo contrario, utilice CAST para convertir character_expression explícitamente.

 Tipos de valor devueltos

varchar o bien nvarchar

 Notas

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para obtener más información, vea

sp_dbcmptlevel (Transact-SQL).

 Ejemplos

En el ejemplo siguiente se muestra cómo utilizar RTRIM para quitar los espacios finales de una variable de

caracteres.

Copiar código

DDECLARE @string_to_trim varchar(60);

SET @string_to_trim = 'Four spaces are after the period in this sentence.

';

SELECT @string_to_trim + ' Next string.';

SELECT RTRIM(@string_to_trim) + ' Next string.';

GO

SOUNDEX (Transact-SQL)Devuelve un código de cuatro caracteres (SOUNDEX) para evaluar la semejanza de dos cadenas.

Convenciones de sintaxis de Transact-SQL

Page 17: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

 Sintaxis

SOUNDEX ( character_expression )

 Argumentos

character_expression

Es una expresión alfanumérica de datos de tipo carácter. character_expression puede ser una

constante, una variable o una columna.

 Tipos de valor devueltos

varchar

 Notas

SOUNDEX convierte una cadena alfanumérica en un código de cuatro caracteres para buscar palabras o

nombres que suenen de forma similar. El primer carácter del código coincide con el primer carácter de

character_expression y los caracteres segundo al cuarto son números. Las vocales de character_expression

no se tienen en cuenta, a menos que sean la primera letra de la cadena.Las funciones de cadena se pueden

anidar.

 Ejemplos

El ejemplo siguiente muestra la función SOUNDEX y la función relacionada DIFFERENCE. En el primer ejemplo

se obtienen los valores estándar de SOUNDEX para todas las consonantes. Al utilizar SOUNDEX para las

cadenas Smith y Smythe, se obtiene el mismo resultado, ya que todas las vocales, la letra y, las letras

dobles y la letra h no se incluyen.

Copiar código

-- Using SOUNDEX

SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe');

SPACE (Transact-SQL)Devuelve una cadena de espacios repetidos.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

SPACE ( integer_expression )

 Argumentos

integer_expression

Es un entero positivo que indica el número de espacios. Si integer_expression es negativo, se

devuelve una cadena de tipo NULL.

Para obtener más información, vea Expresiones (Transact-SQL).

 Tipos de valor devueltos

char

 Notas

Para incluir espacios en datos Unicode o para devolver más de 8.000 espacios de caracteres, utilice

REPLICATE en lugar de SPACE.

 Ejemplos

Page 18: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

En el ejemplo siguiente se eliminan los apellidos y se concatena una coma, dos espacios y los nombres de las

personas que aparecen en la tabla Contact de AdventureWorks.

Copiar código

USE AdventureWorks;

GO

SELECT RTRIM(LastName) + ',' + SPACE(2) + LTRIM(FirstName)

FROM Person.Contact

ORDER BY LastName, FirstName;

GO

STR (Transact-SQL)Devuelve datos de caracteres convertidos a partir de datos numéricos.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

STR ( float_expression [ , length [ , decimal ] ] )

 Argumentos

float_expression

Es una expresión de tipo de datos numéricos aproximados (float) con separador decimal.

length

Es la longitud total. Ésta incluye el separador decimal, el signo, los dígitos y los espacios. El valor

predeterminado es 10.

decimal

Es el número de cifras a la derecha del separador decimal. El valor de decimal debe ser menor o

igual que 16. Si decimal es mayor que 16, el resultado se trunca en el decimosexto lugar a la

derecha del separador decimal.

 Tipos de valor devueltos

char

 Notas

Si se especifican, los valores de los parámetros length y decimal de STR deben ser positivos. De manera

predeterminada, o si el parámetro decimal es 0, el número se redondea a un entero. El valor de length

especificado debe ser mayor o igual que la longitud de la parte del número anterior al separador decimal,

más el signo (si corresponde). Una float_expression corta se justifica a la derecha según al longitud

especificada, y una float_expression larga se trunca según el número de decimales especificados. Por

ejemplo, STR(12,10) da como resultado 12, justificado a la derecha en el conjunto de resultados. Sin

embargo, STR(1223,2) trunca el conjunto de resultados a **. Las funciones de cadena se pueden anidar.

Nota:

Para convertir a datos Unicode, utilice STR en una función de conversión CONVERT o CAST.

 Ejemplos

En el ejemplo siguiente se convierte una expresión formada por un máximo de cinco dígitos y un separador

decimal en una cadena de caracteres de seis posiciones. La parte fraccionaria del número se redondea a un

lugar decimal.

Page 19: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Copiar código

SELECT STR(123.45, 6, 1);

GO

STUFF (Transact-SQL)La función STUFF inserta una cadena en otra. Elimina una longitud determinada de caracteres de la primera

cadena a partir de la posición de inicio y, a continuación, inserta la segunda cadena en la primera, en la

posición de inicio.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

STUFF ( character_expression , start , length ,character_expression )

 Argumentos

character_expression

Es una expresión de datos de caracteres. character_expression puede ser una constante, una

variable o una columna de datos binarios o de caracteres.

start

Es un valor entero que especifica la ubicación donde comienzan la eliminación y la inserción. Si start

o length son negativos, se devuelve una cadena de tipo NULL. Si start es mayor que el primer

parámetro character_expression, se devuelve una cadena de tipo NULL. start puede ser de tipo

bigint.

length

Es un entero que especifica el número de caracteres que se elimina. Si length es mayor que el

primer parámetro character_expression, se produce una eliminación hasta el último carácter del

último parámetro character_expression. length puede ser de tipo bigint.

 Tipos de valor devueltos

Devuelve datos de caracteres si character_expression es de alguno de los tipos de datos de caracteres

admitidos. Devuelve datos binarios si character_expression es de alguno de los tipos de datos binarios

admitidos.

 Notas

Si la posición de inicio o la longitud es negativa, o si la posición de inicio es mayor que la longitud de la

primera cadena, se devuelve una cadena NULL. Si la longitud que se va a eliminar es mayor que la primera

cadena, se elimina hasta el primer carácter de la primera cadena.

Si el valor resultante es mayor que el máximo admitido por el tipo devuelto, se genera un error.

 Ejemplos

En el ejemplo siguiente se devuelve una cadena de caracteres creada al eliminar tres caracteres de la

primera cadena, abcdef, a partir de la posición 2 de b e insertar la segunda cadena en el punto de

eliminación.

Copiar código

SELECT STUFF('abcdef', 2, 3, 'ijklmn');

GO

SUBSTRING (Transact-SQL)

Page 20: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Devuelve parte de una expresión de caracteres, binaria, de texto o de imagen. Para obtener más información

acerca de los tipos de datos válidos de SQL Server que se pueden usar con esta función, vea Tipos de datos

(Transact-SQL).

Convenciones de sintaxis de Transact-SQL

 Sintaxis

SUBSTRING ( value_expression ,start_expression , length_expression )

 Argumentos

value_expression

Es una expresión de tipo character, binary, text, ntext o image.

start_expression

Es un entero o una expresión bigint que especifica dónde comienzan los caracteres devueltos. Si

start_expression es menor que 1, la expresión devuelta comenzará en el primer carácter

especificado en value_expression. En este caso, el número de caracteres que se devuelve es el valor

de la suma de start_expression y length_expression o 0, el que sea mayor. Si start_expression es

mayor que el número de caracteres de la expresión de valor, se devuelve una expresión de longitud

cero.

length_expression

Es un entero positivo o una expresión bigint que especifica cuántos caracteres de value_expression

se van a devolver. Si length_expression es negativo, se genera un error y finaliza la instrucción. Si la

suma de start_expression y length_expression es mayor que el número de caracteres de

value_expression, se devuelve la expresión de valor completa que empieza en start_expression.

 Notas

Los valores para start_expression y length_expression se deben especificar en número de caracteres para los

tipos de datos ntext, charo varchar y en bytes para los tipos de datos text, image, binaryo varbinary.

value_expression debe ser varchar(max) o varbinary(max) cuando start_expression o length_expression

contiene un valor superior a 2147483647.

Nota:

Los niveles de compatibilidad pueden afectar a los valores devueltos. Para obtener más información acerca de los niveles de compatibilidad, vea sp_dbcmptlevel (Transact-SQL).

 Tipos de valor devuelto

Devuelve datos de caracteres si expression es de alguno de los tipos de datos de caracteres admitidos.

Devuelve datos binarios si expression es de alguno de los tipos de datos binary admitidos. La cadena

devuelta es del mismo tipo que la expresión indicada, con las excepciones mostradas en la tabla:

Expresión especificada Valor devuelto

char/varchar/text varchar

nchar/nvarchar/ntext nvarchar

binary/varbinary/image varbinary

 Ejemplos

A. Utilizar SUBSTRING con una cadena de caracteres

Page 21: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

En el siguiente ejemplo se muestra cómo devolver únicamente una parte de una cadena de caracteres. En la

tabla Contact, esta consulta devuelve el apellido en una columna y solamente la primera inicial en la

segunda columna.

Copiar código

USE AdventureWorks;

GO

SELECT LastName, SUBSTRING(FirstName, 1, 1) AS Initial

FROM Person.Contact

WHERE LastName like 'Barl%'

ORDER BY LastName;

UNICODE (Transact-SQL)Devuelve el valor entero, según la definición del estándar Unicode, para el primer carácter de la expresión de

entrada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

UNICODE ( 'ncharacter_expression' )

 Argumentos

' ncharacter_expression '

Es una expresión de tipo nchar o nvarchar.

 Tipos de valor devueltos

int

 Ejemplos

A. Utilizar las funciones UNICODE y NCHAR

En el ejemplo siguiente se utilizan las funciones UNICODE y NCHAR para imprimir el valor UNICODE del

primer carácter de la cadena Åkergatan de 24 caracteres y para imprimir el verdadero primer carácter

(Å).

Copiar código

DECLARE @nstring nchar(12)

SET @nstring = N'Åkergatan 24'

SELECT UNICODE(@nstring), NCHAR(UNICODE(@nstring))

Éste es el conjunto de resultados.

Copiar código

----------- -

197 Å

B. Utilizar SUBSTRING, UNICODE y CONVERT

En el ejemplo siguiente se utilizan las funciones SUBSTRING, UNICODE y CONVERT para imprimir el

número de carácter, el carácter Unicode y el valor UNICODE de cada uno de los caracteres de la cadena

Åkergatan 24.

Page 22: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Copiar código

-- The @position variable holds the position of the character currently

-- being processed. The @nstring variable is the Unicode character

-- string to process.

DECLARE @position int, @nstring nchar(12)

-- Initialize the current position variable to the first character in

-- the string.

SET @position = 1

-- Initialize the character string variable to the string to process.

-- Notice that there is an N before the start of the string, which

-- indicates that the data following the N is Unicode data.

SET @nstring = N'Åkergatan 24'

-- Print the character number of the position of the string you are at,

-- the actual Unicode character you are processing, and the UNICODE

-- value for this particular character.

PRINT 'Character #' + ' ' + 'Unicode Character' + ' ' + 'UNICODE Value'

WHILE @position <= DATALENGTH(@nstring)

-- While these are still characters in the character string,

BEGIN

SELECT @position,

CONVERT(char(17), SUBSTRING(@nstring, @position, 1)),

UNICODE(SUBSTRING(@nstring, @position, 1))

SELECT @position = @position + 1

END

UPPER (Transact-SQL)Devuelve una expresión de caracteres con datos de caracteres en minúsculas convertidos a mayúsculas.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

UPPER ( character_expression )

 Argumentos

character_expression

Es una expresión de datos de caracteres. character_expression puede ser una constante, una

variable o una columna de datos binarios o de caracteres.

character_expression debe ser de un tipo de datos que se pueda convertir implícitamente a

varchar. De lo contrario, utilice CAST para convertir character_expression explícitamente.

 Tipos de valor devueltos

varchar o bien nvarchar

 Ejemplos

Page 23: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

En el ejemplo siguiente se utilizan las funciones UPPER y RTRIM para devolver el apellido de las personas

de la tabla Contact de manera que aparezca en mayúsculas, recortado y concatenado al nombre.

Copiar código

USE AdventureWorks;

GO

SELECT UPPER(RTRIM(LastName)) + ', ' + FirstName AS Name

FROM Person.Contact

ORDER BY LastName;

GO

Funciones matemáticas (Transact-SQL)Las siguientes funciones escalares realizan un cálculo, normalmente basado en valores de entrada

proporcionados como argumentos, y devuelven un valor numérico:

ABS DEGREES RAND

ACOS EXP ROUND

ASIN FLOOR SIGN

ATAN LOG SIN

ATN2 LOG10 SQRT

CEILING PI SQUARE

COS POWER TAN

COT RADIANS  

Nota:

Las funciones aritméticas, como ABS, CEILING, DEGREES, FLOOR, POWER, RADIANS y SIGN, devuelven un valor del mismo tipo de datos que el valor de entrada. Las funciones trigonométricas y otras funciones, incluidas EXP, LOG, LOG10, SQUARE y SQRT, convierten sus valores de entrada a float y devuelven un valor de tipo float.

Todas las funciones matemáticas, excepto RAND, son deterministas, lo que significa que devuelven el mismo

resultado cada vez que se llaman con un conjunto específico de valores de entrada. RAND es determinista

sólo cuando se especifica un parámetro de inicialización. Para obtener más información acerca del

determinismo de funciones, vea Funciones deterministas y no deterministas.

ABS (Transact-SQL)Función matemática que devuelve el valor absoluto positivo de una expresión numérica específica.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

ABS ( numeric_expression )

 Argumentos

numeric_expression

Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto

para el tipo de datos bit.

 Tipos de valor devueltos

Page 24: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Devuelve el mismo tipo que numeric_expression.

 Ejemplos

En el siguiente ejemplo se muestra el resultado de utilizar la función ABS en tres números distintos.

Copiar código

SELECT ABS(-1.0), ABS(0.0), ABS(1.0)

ACOS (Transact-SQL)Función matemática que devuelve el ángulo, en radianes, cuyo coseno es la expresión float especificada;

también se denomina arco coseno.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

ACOS ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float o de un tipo que puede convertirse en float implícitamente, con un

valor entre -1 y 1. Los valores situados fuera de este intervalo devuelven NULL y generan un error

de dominio.

 Tipos de valor devueltos

float

 Ejemplos

En el ejemplo siguiente se devuelve el valor ACOS del número especificado.

Copiar código

SET NOCOUNT OFF;

DECLARE @cos float;

SET @cos = -1.0;

SELECT 'The ACOS of the number is: ' + CONVERT(varchar, ACOS(@cos));

ASIN (Transact-SQL)Devuelve el ángulo, expresado en radianes, cuyo seno es la expresión float especificada. También se

denomina arco seno.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

ASIN ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float o un tipo que puede convertirse de forma implícita a float, con un

valor de -1 a 1. Los valores situados fuera de este intervalo devuelven NULL y generan un error de

dominio.

 Tipos de valor devueltos

float

Page 25: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

 Ejemplos

En el siguiente ejemplo se toma una expresión float y se devuelve el valor de ASIN del ángulo especificado.

Copiar código

/* The first value will be -1.01. This fails because the value is

outside the range.*/

DECLARE @angle float

SET @angle = -1.01

SELECT 'The ASIN of the angle is: ' + CONVERT(varchar, ASIN(@angle))

GO

-- The next value is -1.00.

DECLARE @angle float

SET @angle = -1.00

SELECT 'The ASIN of the angle is: ' + CONVERT(varchar, ASIN(@angle))

GO

-- The next value is 0.1472738.

DECLARE @angle float

SET @angle = 0.1472738

SELECT 'The ASIN of the angle is: ' + CONVERT(varchar, ASIN(@angle))

GO

ATAN (Transact-SQL)Devuelve el ángulo en radianes cuya tangente es una expresión de tipo float especificada. También se

denomina arcotangente.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

ATAN ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float o de un tipo que se puede convertir a float de manera implícita.

 Tipos de valor devueltos

float

 Ejemplos

En el siguiente ejemplo se toma una expresión float y se devuelve el valor de ATAN del ángulo especificado.

Copiar código

SELECT 'The ATAN of -45.01 is: ' + CONVERT(varchar, ATAN(-45.01))

SELECT 'The ATAN of -181.01 is: ' + CONVERT(varchar, ATAN(-181.01))

SELECT 'The ATAN of 0 is: ' + CONVERT(varchar, ATAN(0))

SELECT 'The ATAN of 0.1472738 is: ' + CONVERT(varchar, ATAN(0.1472738))

Page 26: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

SELECT 'The ATAN of 197.1099392 is: ' + CONVERT(varchar,

ATAN(197.1099392))

GO

ATN2 (Transact-SQL)Devuelve el ángulo (en radianes) formado por el eje X positivo y la línea que se extiende desde el origen al

punto (y, x), donde x e y son los valores de las dos expresiones de punto flotante especificadas.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

ATN2 ( float_expression , float_expression )

 Argumentos

float_expression

Es una expresión del tipo de datos float.

 Tipos de valor devueltos

float

 Ejemplos

En el siguiente ejemplo se calcula el ATN2 de los componentes x e y especificados.

Copiar código

DECLARE @x float

DECLARE @y float

SET @x = 35.175643

SET @y = 129.44

SELECT 'The ATN2 of the angle is: ' + CONVERT(varchar,ATN2(@x,@y ))

GO

CEILING (Transact-SQL)Devuelve el entero más pequeño mayor o igual que la expresión numérica especificada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

CEILING ( numeric_expression )

 Argumentos

numeric_expression

Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto

para el tipo de datos bit.

 Tipos de valor devueltos

Devuelve el mismo tipo que numeric_expression.

 Ejemplos

El siguiente ejemplo muestra valores numéricos positivos, negativos y cero con la función CEILING.

Copiar código

Page 27: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

SELECT CEILING($123.45), CEILING($-123.45), CEILING($0.0)

GO

COS (Transact-SQL)Es una función matemática que devuelve el coseno trigonométrico del ángulo especificado, expresado en

radianes, en la expresión dada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

COS ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float.

 Tipos de valor devueltos

float

 Ejemplos

El ejemplo siguiente devuelve el valor COS del ángulo específico.

Copiar código

DECLARE @angle float

SET @angle = 14.78

SELECT 'The COS of the angle is: ' + CONVERT(varchar,COS(@angle))

GO

COT (Transact-SQL)Una función matemática que devuelve la cotangente trigonométrica del ángulo especificado, expresada en

radianes, en la expresión float especificada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

COT ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float o de un tipo que se puede convertir a float de manera implícita.

 Tipos de valor devueltos

float

 Ejemplos

El ejemplo siguiente devuelve el valor COT del ángulo específico.

Copiar código

DECLARE @angle float

SET @angle = 124.1332

SELECT 'The COT of the angle is: ' + CONVERT(varchar,COT(@angle))

Page 28: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

GO

DEGREES (Transact-SQL)Devuelve el ángulo correspondiente en grados para un ángulo especificado en radianes.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

DEGREES ( numeric_expression )

 Argumentos

numeric_expression

Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto

para el tipo de datos bit.

 Valores de código de retorno

Devuelve el mismo tipo que numeric_expression.

 Ejemplos

En el ejemplo siguiente se devuelve el número de grados en un ángulo de PI/2 radianes.

Copiar código

SELECT 'The number of degrees in PI/2 radians is: ' +

CONVERT(varchar, DEGREES((PI()/2)));

GO

EXP (Transact-SQL)Devuelve el valor exponencial de la expresión float especificada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

EXP ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float o de un tipo que se puede convertir a float de manera implícita.

 Tipos de valor devueltos

float

 Notas

La constante e (2,718281…) es la base de los logaritmos naturales.

El exponente de un número es la constante e elevada a la potencia del número. Por ejemplo, EXP(1,0) =

e^1,0 = 2,71828182845905 y EXP(10) = e^10 = 22026,4657948067.

El valor exponencial del logaritmo natural de un número es el propio número: EXP (LOG (n)) = n. Asimismo,

el logaritmo natural del valor exponencial de un número es el propio número: LOG (EXP (n)) = n.

 Ejemplos

A. Obtener el exponente de un número

Page 29: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

En el ejemplo siguiente se declara una variable y se devuelve el valor exponencial de la variable especificada

(10) con una descripción de texto.

Copiar código

DECLARE @var float

SET @var = 10

SELECT 'The EXP of the variable is: ' + CONVERT(varchar,EXP(@var))

GO

FLOOR (Transact-SQL)Devuelve el entero más grande que sea menor o igual que la expresión numérica especificada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

FLOOR ( numeric_expression )

 Argumentos

numeric_expression

Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto

para el tipo de datos bit.

 Tipos de valor devueltos

Devuelve el mismo tipo que numeric_expression.

 Ejemplos

En el ejemplo siguiente se muestran valores numéricos positivos, negativos y de moneda con la función

FLOOR.

Copiar código

SELECT FLOOR(123.45), FLOOR(-123.45), FLOOR($123.45)

LOG (Transact-SQL)Devuelve el logaritmo natural de la expresión float especificada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

LOG ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float o de un tipo que se puede convertir a float de manera implícita.

 Tipos de valor devueltos

float

 Notas

La constante e (2.71828182845905…) es la base de los logaritmos naturales.

La base de los logaritmos naturales es la constante e (2.71828182845905…). LOG ( e ) = 1.0.

Page 30: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

El logaritmo natual del valor exponencial de un número es el propio número: LOG (EXP( n ) ) = n. Asimismo,

el valor exponencial del logaritmo natural de un número es el propio número: EXP (LOG( n ) ) = n.

 Ejemplos

A. Calcular el logaritmo de un número.

En el ejemplo siguiente se calcula el LOG de la expresión float especificada.

Copiar código

DECLARE @var float;

SET @var = 10;

SELECT 'The LOG of the variable is: ' + CONVERT(varchar, LOG(@var));

GO

Éste es el conjunto de resultados.

Copiar código

-------------------------------------

The LOG of the variable is: 2.30259

(1 row(s) affected)

B. Calcular el logaritmo del exponente de un número.

En el ejemplo siguiente se calcula el LOG del exponente de un número.

Copiar código

SELECT LOG (EXP (10));

LOG10 (Transact-SQL)Devuelve el logaritmo en base 10 de la expresión float especificada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

LOG10 ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float o de un tipo que se puede convertir de forma implícita a float.

 Tipos de valor devueltos

float

 Notas

Las funciones LOG10 y POWER están relacionadas inversamente entre sí. Por ejemplo, 10 ^ LOG10(n) = n.

 Ejemplos

A. Calcular el logaritmo en base 10 para una variable

En el siguiente ejemplo se calcula el LOG10 de la variable especificada.

Copiar código

DECLARE @var float;

Page 31: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

SET @var = 145.175643;

SELECT 'The LOG10 of the variable is: ' + CONVERT(varchar,LOG10(@var));

GO

PI (Transact-SQL)Devuelve el valor constante de PI.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

PI ( )

 Tipos de valor devueltos

float

 Ejemplos

El siguiente ejemplo devuelve el valor de PI.

Copiar código

SELECT PI()

GO

POWER (Transact-SQL)Devuelve el valor de la expresión especificada elevada a la potencia indicada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

POWER ( float_expression , y )

 Argumentos

float_expression

Es una expresión de tipo float o de un tipo que se puede convertir a float de manera implícita.

y

Es la potencia a la que se eleva float_expression. y puede ser una expresión de la categoría de tipos

de datos numérico exacto o numérico aproximado, excepto el tipo de datos bit.

 Tipos de valor devueltos

Equivalente a float_expression.

 Ejemplos

A. Usar POWER para mostrar resultados de 0,0

Este ejemplo muestra un desbordamiento inferior de coma flotante que da como resultado 0.0.

Copiar código

SELECT POWER(2.0, -100.0);

GO

RADIANS (Transact-SQL)Devuelve los radianes de una expresión numérica en grados.

Page 32: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Convenciones de sintaxis de Transact-SQL

 Sintaxis

RADIANS ( numeric_expression )

 Argumentos

numeric_expression

Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto

para el tipo de datos bit.

 Tipos de valor devueltos

Devuelve el mismo tipo que numeric_expression.

 Ejemplos

A. Utilizar RADIANS para mostrar 0.0

En este ejemplo se devuelve el resultado 0.0 debido a que la expresión numérica que se va a convertir en

radianes es demasiado pequeña para la función RADIANS.

Copiar código

SELECT RADIANS(1e-307)

GO

RAND (Transact-SQL)Devuelve un valor float pseudoaleatorio de 0 a 1. ambos excluidos.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

RAND ( [ seed ] )

 Argumentos

seed

Es una expresión de tipo entero (tinyint, smallint o int) que proporciona el valor de inicialización.

Si no se especifica seed, SQL Server Database Engine (Motor de base de datos de SQL Server)

asigna un valor de inicialización de forma aleatoria. Para un valor de inicialización especificado, el

resultado devuelto es siempre el mismo.

 Tipos de valor devueltos

float

 Notas

Las llamadas repetitivas de RAND() con el mismo valor de inicialización devuelven los mismo resultados.

Para una conexión, si se llama a RAND() con el valor de inicialización especificado, todas las llamadas

posteriores de RAND() generan resultados basados en la llamada a RAND() inicializada. Por ejemplo, la

siguiente consulta siempre devuelve la misma secuencia de números.

Copiar código

SELECT RAND(100), RAND(), RAND()

 Ejemplos

En el siguiente ejemplo se producen cuatro números aleatorios diferentes, generados con la función RAND.

Page 33: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Copiar código

DECLARE @counter smallint;

SET @counter = 1;

WHILE @counter < 5

BEGIN

SELECT RAND() Random_Number

SET @counter = @counter + 1

END;

GO

ROUND (Transact-SQL)Devuelve un valor numérico, redondeado a la longitud o precisión especificadas.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

ROUND ( numeric_expression , length [ ,function ] )

 Argumentos

numeric_expression

Es una expresión de la categoría de tipo de datos numérico exacto o numérico aproximado, excepto

el tipo de datos bit.

length

Es la precisión con la que se redondea numeric_expression. length debe ser una expresión de tipo

tinyint, smallint o int. Si length es un número positivo, numeric_expression se redondea al

número de posiciones decimales que especifica length. Si length es un número negativo,

numeric_expression se redondea a la izquierda del separador decimal, según se especifica en

length.

function

Es el tipo de operación que se realiza. function debe ser de tipo tinyint, smallint o int. Si function

se omite o tiene el valor 0 (predeterminado), numeric_expression se redondea. Si se especifica un

valor distinto de 0, numeric_expression se trunca.

 Tipos de valor devueltos

Devuelve el mismo tipo que numeric_expression.

 Notas

ROUND siempre devuelve un valor. Si length es un valor negativo y mayor que el número de dígitos

anteriores al separador decimal, ROUND devuelve 0.

Ejemplo Resultado

ROUND(748.58, -4) 0

ROUND devuelve un valor de numeric_expression redondeado, independientemente del tipo de datos,

cuando length es un número negativo.

Ejemplos Resultado

ROUND(748.58, -1) 750.00

Page 34: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

ROUND(748.58, -2) 700.00

ROUND(748.58, -3) 1000.00

 Ejemplos

A. Usar ROUND y valores estimados

En el ejemplo siguiente se muestran dos expresiones que demuestran que, con la función ROUND, el último

dígito siempre es un valor estimado.

Copiar código

SELECT ROUND(123.9994, 3), ROUND(123.9995, 3)

GO

SIGN (Transact-SQL)Devuelve el signo positivo (+1), cero (0) o negativo (-1) de la expresión especificada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

SIGN ( numeric_expression )

 Argumentos

numeric_expression

Es una expresión de la categoría de tipo de datos numérico exacto o aproximado, excepto para el

tipo de datos bit.

 Tipos de valor devueltos

Expresión especificada Tipo devuelto

bigint bigint

int/smallint/tinyint int

money/smallmoney money

numeric/decimal numeric/decimal

Otros tipos float

 Ejemplos

En el ejemplo siguiente se devuelven los valores de SIGN para los números de -1 a 1.

Copiar código

DECLARE @value real

SET @value = -1

WHILE @value < 2

BEGIN

SELECT SIGN(@value)

SET NOCOUNT ON

SELECT @value = @value + 1

SET NOCOUNT OFF

END

SET NOCOUNT OFF

Page 35: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

GO

SIN (Transact-SQL)Devuelve el seno trigonométrico del ángulo dado, en radianes, en una expresión float numérica aproximada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

SIN ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float o de un tipo que se puede convertir en float de forma implícita.

 Tipos de valor devueltos

float

 Ejemplos

En el ejemplo siguiente se calcula el seno de un ángulo especificado.

Copiar código

DECLARE @angle float

SET @angle = 45.175643

SELECT 'The SIN of the angle is: ' + CONVERT(varchar,SIN(@angle))

GO

SQRT (Transact-SQL)Devuelve la raíz cuadrada del valor de tipo flotante especificado.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

SQRT ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float o de un tipo que puede convertirse implícitamente a float.

 Tipos de valor devueltos

float

 Ejemplos

En el ejemplo siguiente se devuelve la raíz cuadrada de los números comprendidos entre 1.00 y 10.00.

Copiar código

DECLARE @myvalue float;

SET @myvalue = 1.00;

WHILE @myvalue < 10.00

BEGIN

SELECT SQRT(@myvalue);

SET @myvalue = @myvalue + 1

Page 36: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

END;

GO

SQUARE (Transact-SQL)Devuelve el cuadrado del valor de tipo flotante especificado.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

SQUARE ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float o de un tipo que puede convertirse implícitamente a float.

 Tipos de valor devueltos

float

 Ejemplos

En el ejemplo siguiente se devuelve el volumen de un cilindro de 1 pulgada de radio y 5 pulgadas de alto.

Copiar código

DECLARE @h float, @r float

SET @h = 5

SET @r = 1

SELECT PI()* SQUARE(@r)* @h AS 'Cyl Vol'

TAN (Transact-SQL)Devuelve la tangente de la expresión de entrada.

Convenciones de sintaxis de Transact-SQL

 Sintaxis

TAN ( float_expression )

 Argumentos

float_expression

Es una expresión de tipo float o de un tipo que puede convertirse implícitamente a float,

interpretado como un número de radianes.

 Tipos de valor devueltos

float

 Ejemplos

En el siguiente ejemplo se devuelve la tangente de PI()/2.

Copiar código

SELECT TAN(PI()/2);

 Funciones de fecha y hora

Page 37: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

En las tablas siguientes se enumeran las funciones de fecha y hora de Transact-SQL. Para obtener más

información acerca del determinismo, vea Funciones deterministas y no deterministas.

Funciones que obtienen valores de fecha y hora del sistema

Todos los valores de fecha y hora del sistema se derivan del sistema operativo del equipo en el que se

ejecuta la instancia de SQL Server.

Funciones de fecha y hora del sistema de precisión elevada

SQL Server 2008 obtiene los valores de fecha y hora utilizando la API de Windows

GetSystemTimeAsFileTime(). La exactitud depende del hardware del equipo y de la versión de Windows

en las que la instancia de SQL Server se esté ejecutando. La precisión de esta API se fija en 100

nanosegundos. La precisión se puede determinar mediante la API de Windows

GetSystemTimeAdjustment().

Función Sintaxis Valor devuelto Tipo de datos devuelto

Determinismo

SYSDATETIME SYSDATETIME () Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se está ejecutando. El ajuste de zona horaria no está incluido.

datetime2(7) No determinista

SYSDATETIMEOFFSET

SYSDATETIMEOFFSET ( )

Devuelve un valor datetimeoffset(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se está ejecutando. El ajuste de zona horaria está incluido.

datetimeoffset(7)

No determinista

SYSUTCDATETIME SYSUTCDATETIME ( )

Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se está ejecutando. La fecha y hora se devuelven como hora universal coordinada (UTC).

datetime2(7) No determinista

Page 38: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Funciones de fecha y hora del sistema de precisión baja

Función Sintaxis Valor devuelto

Tipo de datos devuelto Determinismo

CURRENT_TIMESTAMP CURRENT_TIMESTAMP Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se está ejecutando. El ajuste de zona horaria no está incluido.

datetime No determinista

GETDATE GETDATE ( ) Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se está ejecutando. El ajuste de zona horaria no está incluido.

datetime No determinista

GETUTCDATE GETUTCDATE ( ) Devuelve un valor datetime2(7) que contiene la fecha y hora del equipo en el que la instancia de SQL Server se está ejecutando. La fecha y hora se devuelven como una hora universal coordinada (UTC).

datetime No determinista

Funciones que obtienen partes de la fecha y hora

Función Sintaxis Valor devuelto

Tipo de datos devuelto Determinismo

DATENAME DATENAME ( datepart , date )

Devuelve una cadena de caracteres que representa el datepart especificado de la fecha especificada.

nvarchar No determinista

DATEPART DATEPART ( datepart , date )

Devuelve un entero que representa el datepart especificado del date especificado.

int No determinista

Page 39: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

DAY DAY ( date ) Devuelve un entero que representa la parte del día de date especificado.

int Determinista

MONTH MONTH ( date ) Devuelve un entero que representa la parte del mes de un date especificado.

int Determinista

YEAR YEAR ( date ) Devuelve un entero que representa la parte del año de un date especificado.

int Determinista

Funciones que obtienen diferencias de fecha y hora

Función Sintaxis Valor devuelto

Tipo de datos devuelto Determinismo

DATEDIFF DATEDIFF ( datepart , startdate , enddate )

Devuelve el número de límites datepart de fecha y hora entre dos fechas especificadas.

int Determinista

Funciones que modifican valores de fecha y hora

Función Sintaxis Valor devuelto Tipo de datos devuelto

Determinismo

DATEADD DATEADD (datepart , number , date )

Devuelve un nuevo valor datetime agregando un intervalo al datepart especificado del dateespecificado.

El tipo de datos del argumento date.

Determinista

SWITCHOFFSET SWITCHOFFSET (DATETIMEOFFSET , time_zone)

SWITCH OFFSET cambia el ajuste de zona horaria de un valor DATETIMEOFFSET y conserva el valor UTC.

datetimeoffset con la precisión fraccionaria de DATETIMEOFFSET

Determinista

TODATETIMEOFFSET

TODATETIMEOFFSET (expression , time_zone)

TODATETIMEOFFSET transforma un valor datetime2 en un valor datetimeoffset. El valor datetime2 se interpreta en la hora local para el valor time_zone

datetimeoffset con la precisión fraccionaria del argumento datetime

Determinista

Page 40: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

especificado.

Funciones que establecen u obtienen un formato de sesión

Función Sintaxis Valor devuelto

Tipo de datos devuelto Determinismo

@@DATEFIRST @@DATEFIRST Devuelve el valor actual, para la sesión, de SET DATEFIRST.

tinyint No determinista

SET DATEFIRST SET DATEFIRST { number | @number_var }

Establece el primer día de la semana en un número del 1 al 7.

No aplicable

No aplicable

SET DATEFORMAT

SET DATEFORMAT { format | @format_var }

Determina el orden de los componentes de la fecha (mes/día/año) para escribir datos de tipo datetime o smalldatetime.

No aplicable

No aplicable

@@LANGUAGE @@LANGUAGE Devuelve el nombre del idioma que se está utilizando actualmente. @@LANGUAGE no es ninguna función de fecha u hora. Sin embargo, la configuración de idioma puede afectar a la salida de las funciones de fecha.

No aplicable

No aplicable

SET LANGUAGE SET LANGUAGE { [ N ] 'language' | @language_var }

Establece el entorno del idioma de la sesión y los mensajes del sistema. SET LANGUAGE no es ninguna función de fecha u hora. Sin embargo, la configuración de idioma afecta a la salida de las funciones de fecha.

No aplicable

No aplicable

sp_helplanguage sp_helplanguage [ [ @language = ] 'language' ]

Devuelve información sobre los formatos de fecha de todos los idiomas compatibles. sp_helplanguage no es un procedimiento almacenado de fecha u hora. Sin embargo, la configuración de idioma afecta a la salida de las funciones de fecha.

No aplicable

No aplicable

Page 41: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Funciones que validan valores de fecha y hora

Función Sintaxis Valor devuelto

Tipo de datos devuelto Determinismo

ISDATE ISDATE ( expression )

Determina si una expresión de entrada datetime o smalldatetime es un valor de fecha u hora válido.

int ISDATE sólo es determinista si se utiliza con la función CONVERT, cuando se especifica el parámetro de estilo CONVERT y cuando el estilo no es igual a 0, 100, 9 ni 109.

Funciones de conversiónUse las funciones de conversión CAST y CONVERT para convertir expresiones de un tipo de datos a otro,

cuando SQL Server no realice automáticamente las conversiones de tipos de datos. Por ejemplo, si se

compara una expresión char con una expresión datetime o una expresión smallint con una expresión int,

o expresiones char de distintas longitudes, SQL Server las convierte automáticamente. Esto se denomina

conversión implícita. No es necesario utilizar CAST ni CONVERT para estas conversiones implícitas. Sin

embargo, se puede utilizar CAST y CONVERT en los escenarios de conversión siguientes:

Cuando dos expresiones tienen exactamente el mismo tipo de datos.

Cuando dos expresiones se pueden convertir de forma implícita.

Cuando es necesario convertir de forma explícita los tipos de datos.

Si intenta realizar una conversión que no es posible (por ejemplo, convertir una expresión char que incluya

letras a int), SQL Server muestra un mensaje de error.

También se pueden utilizar las funciones CAST y CONVERT para obtener diversos formatos de datos

especiales, así como en la lista de selección, en la cláusula WHERE y en cualquier parte en donde se permita

una expresión.

Si desea que el código de programa de Transact-SQL cumpla el estándar SQL-92, utilice CAST en lugar de

CONVERT. Utilice CONVERT en lugar de CAST para aprovechar la funcionalidad de CONVERT.

Cuando se utiliza CAST o CONVERT, se necesita la siguiente información:

La expresión que se va a convertir; por ejemplo, un informe de ventas necesitaría que los datos de

ventas se convirtieran de datos de moneda a datos de caracteres.

El tipo de datos al que se va a convertir la expresión especificada; por ejemplo, varchar o cualquier

otro tipo de datos del sistema de SQL Server.

A menos que guarde el valor convertido, una conversión sólo será válida mientras dure la función CAST o

CONVERT.

Si no especifica ninguna longitud cuando se convierte al tipo de datos, SQL Server suministra

automáticamente la longitud 30.

 Ejemplos

En los ejemplos siguientes se utiliza CAST en la primera instrucción SELECT y CONVERT en la segunda

instrucción SELECT para convertir la columna Title a una columna nvarchar(20) y reducir así la

longitud de los títulos.

Page 42: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

Copiar código

USE AdventureWorks;

GO

SELECT CAST(Title AS nvarchar(20)) AS Title, Revision

FROM Production.Document

WHERE Revision < 2

GO

O bien

Copiar código

USE AdventureWorks;

GO

SELECT CONVERT(nvarchar(20), Title) AS Title, Revision

FROM Production.Document

WHERE Revision < 2

GO

Éste es el conjunto de resultados (de cualquiera de las consultas).

Copiar código

Title Revision

-------------------- --------

Crank Arm and Tire M 0

Front Reflector Brac 1

Installing Replaceme 0

Repair and Service G 0

Training Wheels 2 1

(5 row(s) affected)

En el ejemplo siguiente, la columna HireDate, una columna datetime, se convierte en una columna

char(11).

Copiar código

USE AdventureWorks

GO

SELECT c.FirstName, c.LastName, CAST(e.HireDate AS char(11)) AS HireDate

FROM HumanResources.Employee e

JOIN Person.Contact c ON e.EmployeeID = c.ContactID

WHERE c.FirstName = 'Kim'

GO

INFOGRAFIA

1. Funciones de cadena SQL http://msdn.microsoft.com/es-es/library/ms181984.aspx

Page 43: Funciones de Cadena, as Fecha y Hora y Conversion de Datos

2. Funciones Matemáticas SQL http://msdn.microsoft.com/es-es/library/ms181984.aspx3. Funciones de fecha y hora http://technet.microsoft.com/es-es/library/ms175509.aspx4. Funciones de conversión de datos

http://technet.microsoft.com/es-es/library/ms175509.aspx