powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ковычки и пробелы в запросе.
18 сообщений из 18, страница 1 из 1
Ковычки и пробелы в запросе.
    #40083616
Sasna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такой вопрос. Обязательно ли должны отсутствовать кавычки у цифр и лишние пробелы при написании запроса?

Просто я пробовал 2 онлайн тренажера.
В одном ругается если есть лишний пробел, в другом нет запрос выполняется. Как правильно? Где почитать про ковычки и пробелы в запросах?
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40083644
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цифра в кавычках - это строка. Цифра без кавычек - число. Так что, кавычить в зависимости от контекста.

Количество пробелов (один или более) не принципиально. Перевод строки тоже не возбраняется. Для удобочитаемости применяется и то и другое.
Другое дело, что пробельный символ, скопированный откуда-то, может быть не с кодом 20, это вполне может вызвать ошибку.
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40083653
Sasna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну вот запрос select count ( OrderID) from OrderDetails where Quantity Between '10' and '35'

Мне говорили что написан не верно. Так как цифры должны быть без кавычек. Хотя если ввести этот запрос то все работает хоть с ковычками хоть без.
Тоесть я так понимаю зависит от базы данных.
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40083666
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sasna,

что значит работает?
что выводит?
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40083669
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sasna
все работает хоть с ковычками хоть без
Хех, а кто сказал, что не должно работать? ;)
Вопрос в том, КАК работает.
Извольте пример.
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE `table1` ( `f1` VARCHAR(10) NOT NULL ) ENGINE = InnoDB; 
INSERT INTO `table1` (`f1`) VALUES ('10'), ('201'), ('154'), ('99'), ('20'), ('21'), ('333');

SELECT `f1` FROM `table1` WHERE `f1` BETWEEN '10' AND '40';
SELECT `f1` FROM `table1` WHERE `f1` BETWEEN 10 AND 40;

Сравните набор записей, возвращенных селектом в варианте с кавычками и без. Какой из них Вы лично считаете "правильным" и почему?
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40083855
Sasna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вадя,

Выводит количество.
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40083856
Sasna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,

Так оно в обоих случаях выводит одинаковый результат. Результат не правильный.
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40083872
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sasna
Выводит количество.
я знаю что что-то выведет, вопрос был глубже- нужные данные или цифры с потолка?
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40083877
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sasna
Так оно в обоих случаях выводит одинаковый результат.
Если использовать стандартный клиент, то результат разный:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
MariaDB [t]> SELECT `f1` FROM `table1` WHERE `f1` BETWEEN '10' AND '40';
+-----+
| f1  |
+-----+
| 10  |
| 201 |
| 154 |
| 20  |
| 21  |
| 333 |
+-----+
6 rows in set (0.002 sec)

MariaDB [t]> SELECT `f1` FROM `table1` WHERE `f1` BETWEEN 10 AND 40;
+----+
| f1 |
+----+
| 10 |
| 20 |
| 21 |
+----+
3 rows in set (0.001 sec)

Вероятно, мобильное приложение работает неправильно.


Sasna
Результат не правильный.
Почему Вы так считаете? ;)
Ведь СУБД успешно отработала оба варианта.
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40084016
DHDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plsql
1.
2.
3.
4.
SELECT '10' < '40';
SELECT '10' > '40';
SELECT '333' < '40';
SELECT '333' > '40';



https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=8ab916abbbb54d051b497fd5c7f9a663
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40084402
Sasna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо ребята я понял в чем отличие.

Ой у меня еще вопрос ввожу команду

SELECT LastName from Persons where City not in ('Sander','Stavn') and Address LIKE '%[0-9]%'
Пишет что нет результата. Хотя результат должен быть на скрине внизу таблица.

Выяснил что проблема в указании с любой цифрой

LIKE '%[0-9]%' Как правильно прописать что б искало с любой цифрой?
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40084403
Sasna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скрин
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40084422
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40084426
Sasna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Про это я знаю, но в той базе данных с которой я работаю пишет вот что No such function: REGEXP
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40084437
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Укажите точную версию своей СУБД.
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40084444
Sasna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all

Запрос
Код: plsql
1.
SELECT ContactName from Suppliers where Country not in ('Spain', 'Japan') and Address like '%[0-9]%' and PostalCode like '%-%'
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40085805
Sasna
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle,
Здравствуйте. Правильный будет второй вариант. Так как между 20 и 40 идут числа 20, 21, 40. Я так понимаю разные результата из за varchar.
varchar это строковый оператор и оно получается не может точно определить из за кавычек я так понял?
...
Рейтинг: 0 / 0
Ковычки и пробелы в запросе.
    #40085894
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sasna,

Доброго дня. Не совсем верно понимаете.
Определяется тип точно, он задан явно. С самого ж начала Вам твердят, что цифорки в кавычках это строковый тип данных (string). Точно такая же строка, как если бы в кавычках были буковки. Для строк и для чисел используются разные алгоритмы сравнения. Потому и результаты разные.
Плюс есть еще неявное преобразование типа - во втором случае перед сравнением строка из поля таблицы будет преобразована в число.
Так что, оба запроса дают правильный результат. Тот же "154" попадает в вывод уже потому, что первые два символа строки находятся в пределах между "10" и "40".
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ковычки и пробелы в запросе.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]