Microsoft SQL Server
Funciones de cadena
Buscar..
Observaciones
Lista de funciones de cadena (ordenadas alfabéticamente):
Izquierda
Devuelve una cadena secundaria que comienza con el carácter más a la izquierda de una cadena y hasta la longitud máxima especificada.
Parámetros:
- expresión del personaje. La expresión de caracteres puede ser de cualquier tipo de datos que se pueda convertir implícitamente a
varchar
onvarchar
, exceptotext
ontext
- longitud máxima. Un número entero entre 0 y el valor máximo de
bigint
(9.223.372.036.854.775.807).
Si el parámetro de longitud máxima es negativo, se generará un error.
SELECT LEFT('This is my string', 4) -- result: 'This'
Si la longitud máxima es mayor que el número de caracteres en la cadena, se devuelve la cadena principal.
SELECT LEFT('This is my string', 50) -- result: 'This is my string'
Derecha
Devuelve una cadena secundaria que es la parte más derecha de la cadena, con la longitud máxima especificada.
Parámetros:
- expresión del personaje. La expresión de caracteres puede ser de cualquier tipo de datos que se pueda convertir implícitamente a
varchar
onvarchar
, exceptotext
ontext
- longitud máxima. Un número entero entre 0 y el valor máximo de
bigint
(9.223.372.036.854.775.807). Si el parámetro de longitud máxima es negativo, se generará un error.
SELECT RIGHT('This is my string', 6) -- returns 'string'
Si la longitud máxima es mayor que el número de caracteres en la cadena, se devuelve la cadena principal.
SELECT RIGHT('This is my string', 50) -- returns 'This is my string'
Subcadena
Devuelve una subcadena que comienza con el carácter que está en el índice de inicio especificado y la longitud máxima especificada.
Parámetros:
- Expresión del personaje La expresión de caracteres puede ser de cualquier tipo de datos que se pueda convertir implícitamente a
varchar
onvarchar
, excepto paratext
ontext
. - Índice de comienzo. Un número (
int
obigint
) que especifica el índice de inicio de la subcadena solicitada. ( Nota: las cadenas en el servidor sql son el índice base 1, lo que significa que el primer carácter de la cadena es el índice 1). Este número puede ser menor que 1. En este caso, si la suma del índice de inicio y la longitud máxima es mayor que 0, la cadena de retorno sería una cadena que comienza desde el primer carácter de la expresión de caracteres y con la longitud de (índice de inicio + max longitud - 1). Si es menos de 0, se devolverá una cadena vacía. - Longitud máxima. Un número entero entre 0 y el valor máximo de
bigint
(9.223.372.036.854.775.807). Si el parámetro de longitud máxima es negativo, se generará un error.
SELECT SUBSTRING('This is my string', 6, 5) -- returns 'is my'
Si la longitud máxima + el índice de inicio es mayor que el número de caracteres en la cadena, se devuelve la cadena principal.
SELECT SUBSTRING('Hello World',1,100) -- returns 'Hello World'
Si el índice de inicio es más grande que el número de caracteres en la cadena, se devuelve una cadena vacía.
SELECT SUBSTRING('Hello World',15,10) -- returns ''
ASCII
Devuelve un valor int que representa el código ASCII del carácter más a la izquierda de una cadena.
SELECT ASCII('t') -- Returns 116
SELECT ASCII('T') -- Returns 84
SELECT ASCII('This') -- Returns 84
Si la cadena es Unicode y el carácter más a la izquierda no es ASCII pero se puede representar en la intercalación actual, se puede devolver un valor mayor a 127:
SELECT ASCII(N'ï') -- returns 239 when `SERVERPROPERTY('COLLATION') = 'SQL_Latin1_General_CP1_CI_AS'`
Si la cadena es Unicode y el carácter más a la izquierda no se puede representar en la intercalación actual, se devuelve el valor int de 63: (que representa un signo de interrogación en ASCII):
SELECT ASCII(N'߷') -- returns 63
SELECT ASCII(nchar(2039)) -- returns 63
Índice de caracteres
Devuelve el índice de inicio de la primera aparición de una expresión de cadena dentro de otra expresión de cadena.
Lista de parámetros:
- Cadena para encontrar (hasta 8000 caracteres)
- Cadena para buscar (cualquier tipo de datos de carácter válido y longitud, incluido el binario)
- (Opcional) índice para comenzar. Un número de tipo int o big int. Si se omite o menos de 1, la búsqueda comienza al principio de la cadena.
Si la cadena a buscar es varchar(max)
, nvarchar(max)
o varbinary(max)
, la función CHARINDEX
devolverá un valor bigint
. De lo contrario, devolverá un int
.
SELECT CHARINDEX('is', 'this is my string') -- returns 3
SELECT CHARINDEX('is', 'this is my string', 4) -- returns 6
SELECT CHARINDEX(' is', 'this is my string') -- returns 5
Carbonizarse
Devuelve un char representado por un código ASCII int.
SELECT CHAR(116) -- Returns 't'
SELECT CHAR(84) -- Returns 'T'
Esto se puede usar para introducir el nuevo avance de línea / línea CHAR(10)
, retornos de carro CHAR(13)
, etc. Consulte AsciiTable.com para referencia.
Si el valor del argumento no está entre 0 y 255, la función CHAR devuelve NULL
.
El tipo de datos de retorno de la función CHAR
es char(1)
Len
Devuelve el número de caracteres de una cadena.
Nota: la función LEN
ignora los espacios finales:
SELECT LEN('My string'), -- returns 9
LEN('My string '), -- returns 9
LEN(' My string') -- returns 12
Si se desea la longitud que incluye espacios finales, existen varias técnicas para lograrlo, aunque cada una tiene sus inconvenientes. Una técnica es agregar un solo carácter a la cadena y luego usar el LEN
menos uno:
DECLARE @str varchar(100) = 'My string '
SELECT LEN(@str + 'x') - 1 -- returns 12
El inconveniente de esto es que si el tipo de la cadena o la variable de la cadena es de la longitud máxima, el apéndice del carácter adicional se descarta y la longitud resultante todavía no contará los espacios finales. Para solucionar esto, la siguiente versión modificada resuelve el problema y proporciona los resultados correctos en todos los casos a costa de una pequeña cantidad de tiempo de ejecución adicional, y debido a esto (resultados correctos, incluso con pares sustitutos, y una velocidad de ejecución razonable) Parece ser la mejor técnica para usar:
SELECT LEN(CONVERT(NVARCHAR(MAX), @str) + 'x') - 1
Otra técnica es usar la función DATALENGTH
.
DECLARE @str varchar(100) = 'My string '
SELECT DATALENGTH(@str) -- returns 12
Es importante tener en cuenta que DATALENGTH
devuelve la longitud en bytes de la cadena en la memoria. Esto será diferente para varchar
vs nvarchar
.
DECLARE @str nvarchar(100) = 'My string '
SELECT DATALENGTH(@str) -- returns 24
Puede ajustar esto dividiendo la longitud de datos de la cadena por la longitud de datos de un solo carácter (que debe ser del mismo tipo). El siguiente ejemplo hace esto, y también maneja el caso donde la cadena objetivo está vacía, evitando así una división por cero.
DECLARE @str nvarchar(100) = 'My string '
SELECT DATALENGTH(@str) / DATALENGTH(LEFT(LEFT(@str, 1) + 'x', 1)) -- returns 12
Incluso esto, sin embargo, tiene un problema en SQL Server 2012 y superior. Producirá resultados incorrectos cuando la cadena contenga pares sustitutos (algunos caracteres pueden ocupar más bytes que otros caracteres en la misma cadena).
Otra técnica es usar REPLACE
para convertir espacios en un carácter no espacial, y tomar el LEN
del resultado. Esto da resultados correctos en todos los casos, pero tiene una velocidad de ejecución muy pobre con cadenas largas.
Concat
Devuelve una cadena que es el resultado de dos o más cadenas unidas. CONCAT
acepta dos o más argumentos.
SELECT CONCAT('This', ' is', ' my', ' string') -- returns 'This is my string'
Nota: A diferencia de las cadenas de concatenación que usan el operador de concatenación de cadenas ( +
), al pasar un valor nulo a la función concat
, se convertirá implícitamente en una cadena vacía:
SELECT CONCAT('This', NULL, ' is', ' my', ' string'), -- returns 'This is my string'
'This' + NULL + ' is' + ' my' + ' string' -- returns NULL.
También los argumentos de un tipo no de cadena se convertirán implícitamente en una cadena:
SELECT CONCAT('This', ' is my ', 3, 'rd string') -- returns 'This is my 3rd string'
Las variables de tipo no de cadena también se convertirán a formato de cadena, sin necesidad de convertirlas manualmente o convertirlas en cadena:
DECLARE @Age INT=23;
SELECT CONCAT('Ram is ', @Age,' years old'); -- returns 'Ram is 23 years old'
Las versiones anteriores no admiten la función CONCAT
y deben usar el operador de concatenación de cadenas ( +
) en su lugar. Los tipos que no son de cadena deben ser convertidos o convertidos en tipos de cadena para poder concatenarlos de esta manera.
SELECT 'This is the number ' + CAST(42 AS VARCHAR(5)) --returns 'This is the number 42'
Inferior
Devuelve una expresión de caracteres ( varchar
o nvarchar
) después de convertir todos los caracteres en mayúsculas a minúsculas.
Parámetros:
- Expresión del personaje Cualquier expresión de caracteres o datos binarios que puede convertirse implícitamente a
varchar
.
SELECT LOWER('This IS my STRING') -- Returns 'this is my string'
DECLARE @String nchar(17) = N'This IS my STRING';
SELECT LOWER(@String) -- Returns 'this is my string'
Superior
Devuelve una expresión de caracteres ( varchar
o nvarchar
) después de convertir todos los caracteres en minúsculas en mayúsculas.
Parámetros:
- Expresión del personaje Cualquier expresión de caracteres o datos binarios que puede convertirse implícitamente a
varchar
.
SELECT UPPER('This IS my STRING') -- Returns 'THIS IS MY STRING'
DECLARE @String nchar(17) = N'This IS my STRING';
SELECT UPPER(@String) -- Returns 'THIS IS MY STRING'
LTrim
Devuelve una expresión de carácter ( varchar
o nvarchar
) después de eliminar todos los espacios en blanco iniciales, es decir, espacios en blanco desde la izquierda hasta el primer carácter de espacio que no sea blanco.
Parámetros:
- expresión del personaje. Cualquier expresión de caracteres o datos binarios que pueda convertirse implícitamente a
varcher
, exceptotext
,ntext
eimage
.
SELECT LTRIM(' This is my string') -- Returns 'This is my string'
RTrim
Devuelve una expresión de caracteres ( varchar
o nvarchar
) después de eliminar todos los espacios en blanco finales, es decir, espacios desde el extremo derecho de la cadena hasta el primer carácter de espacio no blanco a la izquierda.
Parámetros:
- expresión del personaje. Cualquier expresión de caracteres o datos binarios que pueda convertirse implícitamente a
varcher
, exceptotext
,ntext
eimage
.
SELECT RTRIM('This is my string ') -- Returns 'This is my string'
Unicode
Devuelve el valor entero que representa el valor Unicode del primer carácter de la expresión de entrada.
Parámetros:
- Expresión de caracteres Unicode. Cualquier expresión
nchar
onvarchar
válida.
SELECT UNICODE(N'Ɛ') -- Returns 400
DECLARE @Unicode nvarchar(11) = N'Ɛ is a char'
SELECT UNICODE(@Unicode) -- Returns 400
NChar
Devuelve los caracteres Unicode ( nchar(1)
o nvarchar(2)
) correspondientes al argumento entero que recibe, según lo define el estándar de Unicode.
Parámetros:
- expresión entera Cualquier expresión entera que sea un número positivo entre 0 y 65535, o si la intercalación de la base de datos admite el indicador de carácter suplementario (CS), el rango admitido está entre 0 y 1114111. Si la expresión entera no se encuentra dentro de este rango,
null
devuelto
SELECT NCHAR(257) -- Returns 'ā'
SELECT NCHAR(400) -- Returns 'Ɛ'
Marcha atrás
Devuelve un valor de cadena en orden inverso.
Parámetros:
- expresión de la cadena. Cualquier cadena o datos binarios que pueden convertirse implícitamente a
varchar
.
Select REVERSE('Sql Server') -- Returns 'revreS lqS'
PatIndex
Devuelve la posición inicial de la primera aparición de un patrón especificado en la expresión especificada.
Parámetros:
modelo. Una expresión de caracteres contiene la secuencia a encontrar. Limitado a una longitud máxima de 8000 caracteres. Se pueden usar comodines (
%
,_
) en el patrón. Si el patrón no comienza con un comodín, puede que solo coincida con lo que está al principio de la expresión. Si no termina con un comodín, puede que solo coincida con lo que está al final de la expresión.expresión. Cualquier tipo de datos de cadena.
SELECT PATINDEX('%ter%', 'interesting') -- Returns 3.
SELECT PATINDEX('%t_r%t%', 'interesting') -- Returns 3.
SELECT PATINDEX('ter%', 'interesting') -- Returns 0, since 'ter' is not at the start.
SELECT PATINDEX('inter%', 'interesting') -- Returns 1.
SELECT PATINDEX('%ing', 'interesting') -- Returns 9.
Espacio
Devuelve una cadena ( varchar
) de espacios repetidos.
Parámetros:
- expresión entera Cualquier expresión entera, hasta 8000. Si es negativa, se devuelve
null
. si es 0, se devuelve una cadena vacía. (Para devolver una cadena más larga que 8000 espacios, use Replicar.
SELECT SPACE(-1) -- Returns NULL
SELECT SPACE(0) -- Returns an empty string
SELECT SPACE(3) -- Returns ' ' (a string containing 3 spaces)
Reproducir exactamente
Repite un valor de cadena un número especificado de veces.
Parámetros:
- expresión de la cadena. La expresión de cadena puede ser una cadena de caracteres o datos binarios.
- expresión entera Cualquier tipo entero, incluyendo
bigint
. Si es negativo, se devuelvenull
. Si es 0, se devuelve una cadena vacía.
SELECT REPLICATE('a', -1) -- Returns NULL
SELECT REPLICATE('a', 0) -- Returns ''
SELECT REPLICATE('a', 5) -- Returns 'aaaaa'
SELECT REPLICATE('Abc', 3) -- Returns 'AbcAbcAbc'
Nota: Si la expresión de cadena no es del tipo varchar(max)
o nvarchar(max)
, el valor de retorno no excederá los 8000 caracteres. La replicación se detendrá antes de agregar la cadena que hará que el valor de retorno exceda ese límite:
SELECT LEN(REPLICATE('a b c d e f g h i j k l', 350)) -- Returns 7981
SELECT LEN(REPLICATE(cast('a b c d e f g h i j k l' as varchar(max)), 350)) -- Returns 8050
Reemplazar
Devuelve una cadena ( varchar
o nvarchar
) donde todas las apariciones de una cadena secundaria especificada se reemplazan con otra cadena secundaria.
Parámetros:
- expresión de la cadena. Esta es la cadena que se buscaría. Puede ser un carácter o tipo de datos binarios.
- modelo. Esta es la cadena secundaria que se reemplazaría. Puede ser un carácter o tipo de datos binarios. El argumento de patrón no puede ser una cadena vacía.
- reemplazo. Esta es la cadena secundaria que reemplazaría la cadena secundaria del patrón. Puede ser un carácter o datos binarios.
SELECT REPLACE('This is my string', 'is', 'XX') -- Returns 'ThXX XX my string'.
Notas:
- Si la expresión de cadena no es del tipo
varchar(max)
onvarchar(max)
, la función dereplace
trunca el valor de retorno en 8,000 caracteres. - El tipo de datos de retorno depende de los tipos de datos de entrada: devuelve
nvarchar
si uno de los valores de entrada esnvarchar
, ovarchar
contrario. - Devuelve
NULL
si alguno de los parámetros de entrada esNULL
String_Split
Divide una expresión de cadena usando un separador de caracteres. Tenga en cuenta que STRING_SPLIT()
es una función con valores de tabla y, por lo tanto, debe usarse dentro de la cláusula FROM
.
Parámetros:
- cuerda. Cualquier expresión de tipo de carácter (
char
,nchar
,varchar
onvarchar
) - separador Una expresión de un solo carácter de cualquier tipo (
char(1)
,nchar(1)
,varchar(1)
onvarchar(1)
).
Devuelve una tabla de una sola columna donde cada fila contiene un fragmento de la cadena. El nombre de las columnas es value
, y el tipo de datos es nvarchar
si alguno de los parámetros es nchar
o nvarchar
, de lo contrario varchar
.
El siguiente ejemplo divide una cadena usando el espacio como separador:
SELECT value FROM STRING_SPLIT('Lorem ipsum dolor sit amet.', ' ');
Resultado:
value
-----
Lorem
ipsum
dolor
sit
amet.
Observaciones:
La función
STRING_SPLIT
está disponible solo en el nivel de compatibilidad 130 . Si el nivel de compatibilidad de su base de datos es inferior a 130, SQL Server no podrá encontrar y ejecutar la funciónSTRING_SPLIT
. Puede cambiar el nivel de compatibilidad de una base de datos usando el siguiente comando:
ALTER DATABASE [database_name] SET COMPATIBILITY_LEVEL = 130
Las versiones anteriores del servidor SQL no tienen una función de cadena de división integrada. Hay muchas funciones definidas por el usuario que resuelven el problema de dividir una cadena. Puede leer el artículo de Aaron Bertrand Dividir las cuerdas de la manera correcta, o la mejor manera de obtener una comparación completa de algunas de ellas.
Str
Devuelve datos de caracteres ( varchar
) convertidos de datos numéricos.
Parámetros:
- expresión flotante Un tipo de datos numérico aproximado con un punto decimal.
- longitud. Opcional. La longitud total de la expresión de cadena que se devolvería, incluidos los dígitos, el punto decimal y los espacios iniciales (si es necesario). El valor predeterminado es 10.
- decimal. Opcional. El número de dígitos a la derecha del punto decimal. Si es mayor que 16, el resultado se truncaría a dieciséis lugares a la derecha del punto decimal.
SELECT STR(1.2) -- Returns ' 1'
SELECT STR(1.2, 3) -- Returns ' 1'
SELECT STR(1.2, 3, 2) -- Returns '1.2'
SELECT STR(1.2, 5, 2) -- Returns ' 1.20'
SELECT STR(1.2, 5, 5) -- Returns '1.200'
SELECT STR(1, 5, 2) -- Returns ' 1.00'
SELECT STR(1) -- Returns ' 1'
Nombre de lugar
Devuelve una cadena Unicode rodeada de delimitadores para convertirla en un identificador válido delimitado por SQL Server.
Parámetros:
- cadena de caracteres. Una cadena de datos Unicode, hasta 128 caracteres (
sysname
). Si una cadena de entrada tiene más de 128 caracteres, la función devuelvenull
. - carácter de la cita. Opcional Un solo carácter para utilizar como delimitador. Puede ser una comilla simple (
'
o ``), un corchete izquierdo o derecho ({
,[
,(
,<
o>
,)
,]
,}
) o una comilla doble ("
). Cualquier otro valor devolverá nulo El valor por defecto es entre corchetes.
SELECT QUOTENAME('what''s my name?') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', '[') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', ']') -- Returns [what's my name?]
SELECT QUOTENAME('what''s my name?', '''') -- Returns 'what''s my name?'
SELECT QUOTENAME('what''s my name?', '"') -- Returns "what's my name?"
SELECT QUOTENAME('what''s my name?', ')') -- Returns (what's my name?)
SELECT QUOTENAME('what''s my name?', '(') -- Returns (what's my name?)
SELECT QUOTENAME('what''s my name?', '<') -- Returns <what's my name?>
SELECT QUOTENAME('what''s my name?', '>') -- Returns <what's my name?>
SELECT QUOTENAME('what''s my name?', '{') -- Returns {what's my name?}
SELECT QUOTENAME('what''s my name?', '}') -- Returns {what's my name?}
SELECT QUOTENAME('what''s my name?', '`') -- Returns `what's my name?`
Soundex
Devuelve un código de cuatro caracteres ( varchar
) para evaluar la similitud fonética de dos cadenas.
Parámetros:
- expresión del personaje. Una expresión alfanumérica de datos de caracteres.
La función soundex crea un código de cuatro caracteres que se basa en cómo sonaría la expresión del carácter cuando se habla. la primera char es la versión en mayúsculas del primer carácter del parámetro, los restantes 3 caracteres son números que representan las letras en la expresión (excepto a, e, i, o, u, h, w e y que se ignoran) .
SELECT SOUNDEX ('Smith') -- Returns 'S530'
SELECT SOUNDEX ('Smythe') -- Returns 'S530'
Diferencia
Devuelve un valor entero ( int
) que indica la diferencia entre los valores soundex de dos expresiones de caracteres.
Parámetros:
- expresión de caracteres 1.
- expresión de caracteres 2.
Ambos parámetros son expresiones alfanuméricas de datos de caracteres.
El número entero devuelto es el número de caracteres en los valores soundex de los parámetros que son iguales, por lo que 4 significa que las expresiones son muy similares y 0 significa que son muy diferentes.
SELECT SOUNDEX('Green'), -- G650
SOUNDEX('Greene'), -- G650
DIFFERENCE('Green','Greene') -- Returns 4
SELECT SOUNDEX('Blotchet-Halls'), -- B432
SOUNDEX('Greene'), -- G650
DIFFERENCE('Blotchet-Halls', 'Greene') -- Returns 0
Formato
Devuelve un valor NVARCHAR
formateado con el formato y la cultura especificados (si se especifica). Esto se utiliza principalmente para convertir los tipos de fecha y hora en cadenas.
Parámetros:
-
value
Una expresión de un tipo de datos soportado para formatear. Los tipos válidos se enumeran a continuación. -
format
Un patrón de formatoNVARCHAR
. Consulte la documentación oficial de Microsoft para las cadenas de formato estándar y personalizado . -
culture
Opcional Argumentonvarchar
especificando una cultura. El valor predeterminado es la cultura de la sesión actual.
FECHA
Usando cadenas de formato estándar:
DECLARE @d DATETIME = '2016-07-31';
SELECT
FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result' -- Returns '7/31/2016'
,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result' -- Returns '31/07/2016'
,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result' -- Returns '31.07.2016'
,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result' -- Returns '2016/7/31'
,FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result' -- Returns 'Sunday, July 31, 2016'
,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result' -- Returns '31 July 2016'
,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result' -- Returns 'Sonntag, 31. Juli 2016'
Usando cadenas de formato personalizado:
SELECT FORMAT( @d, 'dd/MM/yyyy', 'en-US' ) AS 'DateTime Result' -- Returns '31/07/2016'
,FORMAT(123456789,'###-##-####') AS 'Custom Number Result' -- Returns '123-45-6789',
,FORMAT( @d,'dddd, MMMM dd, yyyy hh:mm:ss tt','en-US') AS 'US' -- Returns 'Sunday, July 31, 2016 12:00:00 AM'
,FORMAT( @d,'dddd, MMMM dd, yyyy hh:mm:ss tt','hi-IN') AS 'Hindi' -- Returns रविवार, जुलाई 31, 2016 12:00:00 पूर्वाह्न
,FORMAT ( @d, 'dddd', 'en-US' ) AS 'US' -- Returns 'Sunday'
,FORMAT ( @d, 'dddd', 'hi-IN' ) AS 'Hindi' -- Returns 'रविवार'
FORMAT
también se puede utilizar para formatear CURRENCY
, PERCENTAGE
y NUMBERS
.
MONEDA
DECLARE @Price1 INT = 40
SELECT FORMAT(@Price1,'c','en-US') AS 'CURRENCY IN US Culture' -- Returns '$40.00'
,FORMAT(@Price1,'c','de-DE') AS 'CURRENCY IN GERMAN Culture' -- Returns '40,00 €'
Podemos especificar el número de dígitos después del decimal.
DECLARE @Price DECIMAL(5,3) = 40.356
SELECT FORMAT( @Price, 'C') AS 'Default', -- Returns '$40.36'
FORMAT( @Price, 'C0') AS 'With 0 Decimal', -- Returns '$40'
FORMAT( @Price, 'C1') AS 'With 1 Decimal', -- Returns '$40.4'
FORMAT( @Price, 'C2') AS 'With 2 Decimal', -- Returns '$40.36'
PORCENTAJE
DECLARE @Percentage float = 0.35674
SELECT FORMAT( @Percentage, 'P') AS '% Default', -- Returns '35.67 %'
FORMAT( @Percentage, 'P0') AS '% With 0 Decimal', -- Returns '36 %'
FORMAT( @Percentage, 'P1') AS '% with 1 Decimal' -- Returns '35.7 %'
NÚMERO
DECLARE @Number AS DECIMAL(10,2) = 454545.389
SELECT FORMAT( @Number, 'N','en-US') AS 'Number Format in US', -- Returns '454,545.39'
FORMAT( @Number, 'N','en-IN') AS 'Number Format in INDIA', -- Returns '4,54,545.39'
FORMAT( @Number, '#.0') AS 'With 1 Decimal', -- Returns '454545.4'
FORMAT( @Number, '#.00') AS 'With 2 Decimal', -- Returns '454545.39'
FORMAT( @Number, '#,##.00') AS 'With Comma and 2 Decimal', -- Returns '454,545.39'
FORMAT( @Number, '##.00') AS 'Without Comma and 2 Decimal', -- Returns '454545.39'
FORMAT( @Number, '000000000') AS 'Left-padded to nine digits' -- Returns '000454545'
Lista de tipos de valores válidos: ( fuente )
Category Type .Net type
-------------------------------------------
Numeric bigint Int64
Numeric int Int32
Numeric smallint Int16
Numeric tinyint Byte
Numeric decimal SqlDecimal
Numeric numeric SqlDecimal
Numeric float Double
Numeric real Single
Numeric smallmoney Decimal
Numeric money Decimal
Date and Time date DateTime
Date and Time time TimeSpan
Date and Time datetime DateTime
Date and Time smalldatetime DateTime
Date and Time datetime2 DateTime
Date and Time datetimeoffset DateTimeOffset
Notas importantes:
-
FORMAT
devuelveNULL
para errores distintos de una cultura que no es válida. Por ejemplo, se devuelveNULL
si el valor especificado en el formato no es válido. -
FORMAT
basa en la presencia de .NET Framework Common Language Runtime (CLR). -
FORMAT
basa en las reglas de formato de CLR que dictan que los dos puntos y los periodos deben escaparse. Por lo tanto, cuando la cadena de formato (segundo parámetro) contiene dos puntos o puntos, los dos puntos o puntos deben escaparse con una barra invertida cuando un valor de entrada (primer parámetro) es del tipo de datos de tiempo.
Vea también Formato de fecha y hora usando el ejemplo de documentación FORMATO .
String_escape
Escapa caracteres especiales en textos y devuelve texto ( nvarchar(max)
) con caracteres escapados.
Parámetros:
texto. es una expresión
nvarchar
que representa la cadena que debe escaparse.tipo. Reglas de escape que se aplicarán. Actualmente el único valor soportado es
'json'
.
SELECT STRING_ESCAPE('\ /
\\ " ', 'json') -- returns '\\\t\/\n\\\\\t\"\t'
Lista de personajes que se escaparán:
Special character Encoded sequence
-------------------------------------
Quotation mark (") \"
Reverse solidus (\) \\
Solidus (/) \/
Backspace \b
Form feed \f
New line \n
Carriage return \r
Horizontal tab \t
Control character Encoded sequence
------------------------------------
CHAR(0) \u0000
CHAR(1) \u0001
... ...
CHAR(31) \u001f