Я помню, как читал о цитировании материала при выполнении SQL-запроса, и когда вы цитируете что-то, он становится строкой. Я также читал, что цифры не следует указывать. Теперь я не могу найти эту цитату, и мне нужно обновить мою память, чтобы посмотреть, следует ли цитировать числа.Должен ли я цитировать числа в SQL?
ответ
Вы не должны указывать числа.
Вы правы, помня, что это делает его строкой.
SELECT 10 AS x
совершенно законно и будет возвращать (в большинстве СУБД) столбец типа данных Int (или его вариант.)
Я заметил комментарий на ваш вопрос Адам, и я хотел бы чтобы сделать комментарий к этому, но я отредактирую этот ответ, потому что я думаю, что это важный момент.
со ссылкой на «номера» в SQL обычно делается, когда это на самом деле не номер, но вместо код.
От номер Я имею в виду что-то, что вы можете подсчитать, рассчитать, код является идентификатором.
Итак, SSN - это код, это ваш уникальный код (я знаю, что N означает «число», бит неправильного значения, если вы спросите меня), но вы не попытались бы вычислить среднее значение всех SSN в базе данных.
Если вы храните идентификаторы продуктов в базе данных в виде строк, но на самом деле они состоят только из цифр, то это коды, а не числа.
Коды следует указывать, номера не должны.
Я не знаю, что вы, возможно, читали, но не указываете числа.
Ниже приведен пример, в котором со ссылкой бы привести к непредсказуемым результатам (в MySQL):
select 1 < 1.0; // returns 0
select '1' < '1.0'; // returns 1
Это потому, что второе сравнение выполняется с использованием текущей строки сортировки, а не численно.
Лучше не цитировать числа, так как это просто лишний шаг для базы данных, чтобы преобразовать строковый литерал в числовое значение для сравнения и изменить значение сравнения.
э-э ... нет, не стоит?
Я предполагаю, что вы имеете в виду, процитировав ограждающих в 'like 'this'
INSERT INTO table (foo) VALUES (999);
совершенно законно, пока Foo является тип collumn INT INSERT INTO table (foo) VALUES('foo');
Вставки строка Foo в таблицу. Конечно, вы не можете делать это на таблицах типов INT.
Очевидно, что не забудьте проверить, чтобы удостовериться, что любое значение, которое вы передали, действительно является числом.
Ну, с риском воспламенения пламени, могу ли я почтительно не согласиться здесь, что НИКОГДА не использовать одиночные кавычки вокруг числового значения?Мне кажется, что SOMETIMES имеет смысл использовать одинарные кавычки вокруг числового значения. Если col1 является столбцом INT, а затем (с помощью VBScript в качестве примера)
sql = "INSERT " & foo & " INTO col1 WHERE ID = 1"
и
sql = "INSERT '" & foo & "' INTO col1 WHERE ID = 1"
будет ОБА, когда выполняется SQL, вставить любое целое значение Foo правильно. Но что, если вы хотите, чтобы 0 был вставлен, когда foo не инициализирован? Использование цитированного числового выражения, подобного этому, предотвращает ошибку и обрабатывает нулевой случай. Считаете ли вы, что это хорошая практика, это, безусловно, так.
- 1. Как цитировать числа в переменную с ruby?
- 2. Как мне цитировать числа вокруг календаря в C++?
- 3. Можно ли цитировать через MarkerFaceColor в Matlab?
- 4. Должен ли я использовать LINQ To SQL?
- 5. Должен ли я использовать курсоры SQL здесь?
- 6. Зачем цитировать?
- 7. Должен ли я использовать SQL или JSON
- 8. SQL - Должен ли я использовать соединение?
- 9. Как цитировать вопрос, является ли число целым?
- 10. питон - как правильно цитировать SQL-строку
- 11. Должен ли я использовать целые числа для сохранения булевых значений?
- 12. Как цитировать «* /» в JavaDocs
- 13. Должен ли я блокировать бот *?
- 14. Должен ли я использовать MongoDB?
- 15. Цитировать значения по умолчанию в create table Команда SQL Server
- 16. Должен ли я поймать EmptyResultDataAccessException?
- 17. Должен ли я использовать сеансы?
- 18. Должен ли я использовать ExecutorService?
- 19. Должен ли я по-прежнему видеть запрос в SQL Profiler?
- 20. Должен ли я воздерживаться от использования цикла в SQL?
- 21. Должен ли я всегда полностью определять имена столбцов в SQL?
- 22. Должен ли я использовать триггеры в SQL для вставки записей?
- 23. Должен ли я обрезать значения в SQL или ColdFusion?
- 24. Должен ли я избегать подстановочных знаков в запросе SQL «LIKE»?
- 25. Должен ли я сделать асинхронный SQL-запрос в следующем случае?
- 26. Должен ли я закрыть groovy Sql в сервисе Grails
- 27. Должен ли я использовать цикл в sql или php?
- 28. Должен ли я индексировать бит в SQL Server?
- 29. Должен ли я использовать курсоры в своей процедуре SQL?
- 30. Должен ли я использовать registerDataFrameAsTable в Spark SQL?
Зависит от того, как значение хранится в db. Если он хранится в виде текста, цитируйте его, если он хранится в виде числа: 0) – bernie
Это не номер, это код. Как идентификатор продукта или аналогичный. Число, которое вы используете для расчета. Номер не должен указываться, поскольку номер никогда не должен храниться в базе данных в виде строки. –
@ У вас есть источник для вашего определения, что идентификатор, состоящий из числовых цифр, не является числом и поэтому должен быть указан? И что, если это идентификатор, который соответствует строкам в таблице, подобной 1 для row1 e.t.c? – barlop