sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo funciona la función STR() en SQL Server (T-SQL)

En SQL Server, el T-SQL STR() La función devuelve datos de caracteres convertidos a partir de datos numéricos. El valor de retorno tiene un tipo de retorno de varchar .

Proporciona los datos numéricos como argumento al llamar a la función. La función luego los convierte en datos de caracteres. También hay dos argumentos opcionales que puede usar para especificar la longitud y el número de lugares a la derecha del punto decimal.

Sintaxis

La sintaxis es así:

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

Donde expresión_flotante es una expresión de valor numérico aproximado (float ) tipo de datos con punto decimal.

longitud es un argumento opcional que puede usar para especificar la longitud total. Esto incluye punto decimal, signo, dígitos y espacios. El valor predeterminado es 10.

decimales es el número de lugares a la derecha del punto decimal. Este puede tener un valor máximo de 16. Si es más que eso, se trunca a 16.

Ejemplo 1:uso básico

He aquí un ejemplo de cómo funciona:

SELECT STR(123.45) AS Result;

Resultado:

+------------+
| Result     |
|------------|
|        123 |
+------------+

Ejemplo 2:redondeo

De forma predeterminada, el número se redondea a un número entero. Si ajustamos la entrada del ejemplo anterior (p. ej., aumentamos la parte fraccionaria de .45 a .55 ) obtenemos lo siguiente:

SELECT STR(123.55) AS Result;

Resultado:

+------------+
| Result     |
|------------|
|        124 |
+------------+

Ejemplo 3 – Longitud

Cuando se usa la longitud opcional parámetro, su valor debe ser mayor o igual a la parte del número antes del punto decimal más el signo del número (si lo hay).

Por ejemplo, lo siguiente está bien, porque longitud es mayor que la parte del número antes del punto decimal:

SELECT STR(123.55, 4) AS Result;

Resultado:

+----------+
| Result   |
|----------|
|  124     |
+----------+

Sin embargo, el siguiente ejemplo demuestra lo que sucede cuando la longitud el valor es demasiado pequeño:

SELECT STR(123.55, 2) AS Result;

Resultado:

+----------+
| Result   |
|----------|
| **       |
+----------+

También tenga en cuenta que longitud determina la longitud de la salida e incluye el punto decimal, el signo, los dígitos y los espacios. La longitud predeterminada es 10.

Aquí hay un ejemplo para demostrar la diferencia en la salida dependiendo del valor de la longitud argumento:

SELECT 
  123 AS '123',
  STR(123, 3) AS '3',
  STR(123, 10) AS '10',
  STR(123, 16) AS '16';

Resultado:

+-------+-----+------------+------------------+
| 123   | 3   | 10         | 16               |
|-------+-----+------------+------------------|
| 123   | 123 |        123 |              123 |
+-------+-----+------------+------------------+

Para otra forma de demostrar esto, en el siguiente ejemplo recorte la salida usando TRIM() (y compáralo con la versión sin recortar):

SELECT 
  TRIM(STR(123, 16)) AS 'A',
  STR(123, 16) AS 'B';

Resultado:

+-----+------------------+
| A   | B                |
|-----+------------------|
| 123 |              123 |
+-----+------------------+

Ejemplo 4 – Lugares decimales

Aquí hay un ejemplo del uso del decimal opcional parámetro:

SELECT STR(123.55, 8, 4) AS Result;

Resultado:

+----------+
| Result   |
|----------|
| 123.5500 |
+----------+

Observe que aumenté el valor de longitud para acomodar los lugares decimales.

Si reduzco la longitud valor a 6 , me sale esto:

SELECT STR(123.55, 6, 4) AS Result;

Resultado:

+----------+
| Result   |
|----------|
| 123.55   |
+----------+