Recuerdo leer sobre citar cosas al hacer una consulta SQL y que cuando citas algo, se convierte en una cadena. También leí que los números no deberían citarse. Ahora, no puedo encontrar esa cita y necesito actualizar mi memoria para ver si debo citar los números.¿Debo citar números en SQL?
Respuesta
No debe citar los números.
Estás en lo correcto al recordar que lo convierte en una cadena.
SELECT 10 AS x
es perfectamente legal y volverá (en la mayoría de los motores de base de datos) de una columna de tipo de datos int (o una variación del mismo.)
noto el comentario a la pregunta de Adam, y me gustaría para hacer un comentario sobre eso, pero editaré esta respuesta porque creo que es un punto importante.
citar "números" en SQL generalmente se realiza cuando no es realmente un número , pero en lugar de un código.
Por un número me refiero a algo que puede contar, sumar, calcular con, un código es un identificador.
Así que un SSN es un código, es tu código único (lo sé, la N significa "número", un poco inapropiado si me preguntas), pero no tratarías de calcular el promedio de todas las SSN en la base de datos.
Si almacena ID de productos en la base de datos como cadenas, pero en realidad solo están formados por dígitos, entonces son códigos, no números.
Los códigos deben ser citados, los números no deberían ser.
No sé lo que puede haber leído, pero no cite los números.
He aquí un ejemplo, donde se cita produciría resultados inconsistentes (en MySQL):
select 1 < 1.0; // returns 0
select '1' < '1.0'; // returns 1
Esto se debe a la segunda comparación se realiza utilizando la ordenación de cadenas actual en lugar de numéricamente.
Es mejor no citar los números, ya que sería simplemente un paso innecesario adicional para la base de datos convertir el literal de la cadena en un valor numérico para la comparación y podría alterar el significado de las comparaciones.
eh ... no, ¿no debería?
supongo que te refieres citando encerrando en 'like 'this'
INSERT INTO table (foo) VALUES (999);
es perfectamente legal siempre y cuando foo es un tipo collumn INT INSERT INTO table (foo) VALUES('foo');
Inserta la cadena foo en la tabla. No puede hacer esto en tablas de tipo INT, por supuesto.
Obviamente, no se olvide de comprobar para asegurarse de que el valor que haya pasado sea realmente un número.
Bueno, a riesgo de encender una llama, ¿puedo discrepar un poco aquí de que NUNCA está bien usar comillas simples alrededor de un valor numérico?Me parece que A VECES tiene sentido usar comillas simples alrededor de un valor numérico. Si col1 es una columna INT, entonces (usando VBScript como un ejemplo)
sql = "INSERT " & foo & " INTO col1 WHERE ID = 1"
y
sql = "INSERT '" & foo & "' INTO col1 WHERE ID = 1"
los dos para, cuando se ejecuta SQL, inserte cualquier valor entero de foo correctamente. Pero, ¿qué ocurre si desea insertar 0 cuando Foo no está inicializado? Usar una expresión numérica entrecomillada como esta previene un error y maneja el caso nulo. Si crees que esto es una buena práctica o no, es cierto.
- 1. Cómo citar "* /" en JavaDocs
- 2. Citar/Referencia OpenMP en un documento
- 3. Números persas en SQL Server 2005
- 4. SQL Tricky - seleccionar números
- 5. Desventajas de citar enteros en una consulta Mysql?
- 6. ¿Cómo puedo citar cadenas en SASS?
- 7. Sugerencia para \ citar en Emacs con AUCTeX
- 8. Cómo citar valores utilizando group_concat
- 9. ¿Cómo puedo citar una cadena larga en Perl?
- 10. SQL, tabla auxiliar de números
- 11. Números mod negativos en SQL como excel
- 12. ¿Debo verificar la inyección sql incluso en entradas validadas?
- 13. Cómo citar nombres de columna con Zend_Db?
- 14. Evitar que bash interprete sin citar todo
- 15. ¿Para qué sirve el atributo citar?
- 16. LINQ a SQL tiene la columna de palabras clave como nombre de columna, como citar/escapar
- 17. C#: ¿Cómo debo manejar la aritmética con números enormes?
- 18. Crear números pequeños del índice SQL Server
- 19. Insertar números delimitados específicos en una columna en SQL Server
- 20. cuando para citar el símbolo en Emacs Lisp
- 21. ¿Cómo citar una cita con la función concatenar en OOCalc
- 22. Cómo citar \ "(barra doble) en un literal de cadena?
- 23. ¿Debo comenzar a usar LINQ to SQL?
- 24. ¿Debo utilizar transacciones SQL mientras leo registros?
- 25. Cómo concatenar números y cadenas para formatear números en T-SQL?
- 26. Forma correcta de generar números de orden en SQL Server
- 27. Búsqueda SQL en un campo numérico para números no enteros
- 28. Cómo generar números con una distribución normal en SQL Server
- 29. números extracto de un texto en SQL Server
- 30. consulta T-SQL en la columna sólo contiene números
Depende de cómo se almacena el valor en el db. Si está almacenado como texto, cítelo, si está almacenado como un número, no lo haga :-) – bernie
No es un número, es un código. Como un ID de producto o similar. Un número es algo que usas para el cálculo. No se debe citar un número, ya que un número nunca se debe almacenar en la base de datos como una cadena. –
@Someone ¿tiene una fuente para su definición de que una ID compuesta de dígitos numéricos no es un número y, por lo tanto, debe citarse? ¿Y qué ocurre si se trata de una identificación que corresponde a las filas de una tabla como 1 para row1 e.t.c? – barlop