Saltar al contenido

SELECCIONE $ (signo de dólar)

Después de mucho trabajar ya encontramos el arreglo de este atolladero que algunos usuarios de este sitio web tienen. Si deseas compartir algún detalle no dudes en dejar tu comentario.

Solución:

Cuando SQL Server encuentra su $ signo, automáticamente lo convierte en un money tipo de datos. Debido a que no tiene un valor explícito después del signo de dólar, SQL Server asume 0.00. Desde MSDN:

Al convertir a money o smallmoney, se supone que los números enteros son unidades monetarias. Por ejemplo, el valor entero de 4 se convierte en el equivalente en dinero de 4 dólares (para us_english, el idioma predeterminado). Los números a la derecha del decimal en valores de coma flotante se redondean a cuatro lugares decimales para valores monetarios. Las expresiones de tipos de datos char o varchar que se están convirtiendo a un tipo de datos enteros deben constar solo de dígitos y un signo más o menos opcional (+ o -). Los espacios en blanco iniciales se ignoran. Las expresiones de tipos de datos char o varchar convertidas en dinero también pueden incluir un punto decimal opcional y un signo de dólar inicial ($).

Después de jugar un poco, me di cuenta de que esto sucede sin importar qué símbolo de moneda se use, el servidor SQL implica que el campo es un campo de moneda.

Si agrega números después del símbolo de la moneda, en este caso un dólar, entonces:

SELECT $4

El servidor SQL devolverá 4.00

Entonces, SQL Server está usando $ y suponiendo que queremos crear un campo con el DINERO tipo de datos y como no hemos ingresado un valor después del símbolo de moneda, SQL Server asume que el valor es 0, aunque en mi opinión esto debería devolver NULL.

Puede probar que SQL Server lo está tratando como un money tipo:

select $ as n into #x

exec tempdb..sp_help '#x'

sp_help generará (entre otras cosas):

 Column_name     Type     Computed     Length     Prec     Scale     Nullable     TrimTrailingBlanks     FixedLenNullInSource     Collation    
 --------------  -------  -----------  ---------  -------  --------  -----------  ---------------------  -----------------------  ------------ 
 n               money    no           8          19       4         no           (n/a)                  (n/a)                    (null)       

Si haces scroll puedes encontrar las interpretaciones de otros administradores, tú asimismo puedes dejar el tuyo si lo deseas.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *