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:

  1. expresión del personaje. La expresión de caracteres puede ser de cualquier tipo de datos que se pueda convertir implícitamente a varchar o nvarchar , excepto text o ntext
  2. 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:

  1. expresión del personaje. La expresión de caracteres puede ser de cualquier tipo de datos que se pueda convertir implícitamente a varchar o nvarchar , excepto text o ntext
  2. 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:

  1. Expresión del personaje La expresión de caracteres puede ser de cualquier tipo de datos que se pueda convertir implícitamente a varchar o nvarchar , excepto para text o ntext .
  2. Índice de comienzo. Un número ( int o bigint ) 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.
  3. 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:

  1. Cadena para encontrar (hasta 8000 caracteres)
  2. Cadena para buscar (cualquier tipo de datos de carácter válido y longitud, incluido el binario)
  3. (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

SQL Server 2012

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'
SQL Server 2012

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:

  1. 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:

  1. 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:

  1. expresión del personaje. Cualquier expresión de caracteres o datos binarios que pueda convertirse implícitamente a varcher , excepto text , ntext e image .
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:

  1. expresión del personaje. Cualquier expresión de caracteres o datos binarios que pueda convertirse implícitamente a varcher , excepto text , ntext e image .
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:

  1. Expresión de caracteres Unicode. Cualquier expresión nchar o nvarchar 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:

  1. 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:

  1. 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:

  1. 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.

  2. 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:

  1. 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:

  1. expresión de la cadena. La expresión de cadena puede ser una cadena de caracteres o datos binarios.
  2. expresión entera Cualquier tipo entero, incluyendo bigint . Si es negativo, se devuelve null . 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:

  1. expresión de la cadena. Esta es la cadena que se buscaría. Puede ser un carácter o tipo de datos binarios.
  2. 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.
  3. 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) o nvarchar(max) , la función de replace 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 es nvarchar , o varchar contrario.
  • Devuelve NULL si alguno de los parámetros de entrada es NULL

String_Split

SQL Server 2016

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:

  1. cuerda. Cualquier expresión de tipo de carácter ( char , nchar , varchar o nvarchar )
  2. separador Una expresión de un solo carácter de cualquier tipo ( char(1) , nchar(1) , varchar(1) o nvarchar(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ón STRING_SPLIT . Puede cambiar el nivel de compatibilidad de una base de datos usando el siguiente comando:

ALTER DATABASE [database_name] SET COMPATIBILITY_LEVEL = 130
SQL Server 2016

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:

  1. expresión flotante Un tipo de datos numérico aproximado con un punto decimal.
  2. 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.
  3. 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:

  1. 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 devuelve null .
  2. 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:

  1. 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:

  1. expresión de caracteres 1.
  2. 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

SQL Server 2012

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:

  1. value Una expresión de un tipo de datos soportado para formatear. Los tipos válidos se enumeran a continuación.
  2. format Un patrón de formato NVARCHAR . Consulte la documentación oficial de Microsoft para las cadenas de formato estándar y personalizado .
  3. culture Opcional Argumento nvarchar 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 devuelve NULL para errores distintos de una cultura que no es válida. Por ejemplo, se devuelve NULL 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

SQL Server 2016

Escapa caracteres especiales en textos y devuelve texto ( nvarchar(max) ) con caracteres escapados.

Parámetros:

  1. texto. es una expresión nvarchar que representa la cadena que debe escaparse.

  2. 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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow