Как вернуть значения, используя несколько подстановочных знаков - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь найти информацию о номерах деталей в таблице. Проблема в том, что в таблице присутствуют начальные нули, а не в данных, которые я использую.

Если я запускаю запрос с одним значением, как показано ниже, он работает, и мне дают информацию Мне нужно.

SELECT ZMATNR, ZLPN
FROM   tblZMMGPNXREF
where ZMATNR like '%89187605%'

Но когда я использую несколько значений, как показано ниже, я получаю эту ошибку

"Msg 102, Уровень 15, Состояние 1, Строка 3 Неверный синтаксис рядом с ' , '. "

SELECT ZMATNR, ZLPN
FROM   tblZMMGPNXREF
where ZMATNR like '%89187605%','%89363059%'

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 20 марта 2020

Ваш попытка синтаксиса явно не поддерживается. Вы можете использовать OR:

SELECT ZMATNR, ZLPN
FROM tblZMMGPNXREF
WHERE ZMATNR like '%89187605%' OR ZMATNR like '%89363059%';

Или регулярные выражения:

SELECT ZMATNR, ZLPN
FROM tblZMMGPNXREF
WHERE ZMATNR REGEXP '89187605|89363059';

Или, возможно, вам вообще не нужно LIKE, и вы можете просто использовать IN:

SELECT ZMATNR, ZLPN
FROM tblZMMGPNXREF
WHERE ZMATNR IN ('89187605', '89363059');

Это лучший выбор, если он делает то, что вы хотите.

0 голосов
/ 20 марта 2020

Строки чисел с ведущими нулями будут приводиться к целочисленному значению, если сравнивать с целым числом. Тогда начальные нули не будут иметь значения:

mysql> select '00001234' = 1234;
+-------------------+
| '00001234' = 1234 |
+-------------------+
|                 1 |
+-------------------+

Но это работает, только если сравнивать с целыми числами, а не со строками.

Так что предложение Гордона Линоффа не работает:

WHERE ZMATNR IN ('89187605', '89363059');

Но если вы используете целые числа, оно должно работать:

WHERE ZMATNR IN (89187605, 89363059);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...