используя LIKE, чтобы получить записи, которые имеют только определенный характер - PullRequest
2 голосов
/ 07 июня 2019

Один из столбцов в моей таблице SQL содержит "~" как часть строки. Я хочу выбрать все записи, которые имеют ~ со строкой с обеих сторон, но НЕ ЗАВЕРШЕНО с ~

Я пытался использовать оператор LIKE, например:

SELECT TOP (1000) 
     [PNO]
   FROM [MYTABLE] where PNO like  '%~%'

Код правильно возвращает все записи с ~

Результаты:

C799~
C799~001~6907
E066~
E066~001~8558

Однако я хочу изменитьзапрос, чтобы он только возвращал

C799~001~6907
E066~001~8558

Спасибо.

Ответы [ 3 ]

5 голосов
/ 07 июня 2019

Вы можете использовать подстановочный знак _. _ является подстановочным знаком для 1 символа. В целом это означает, что вы принимаете строки с ~ и минимум 1 символом позади:

SELECT TOP (1000) [PNO]
FROM [MYTABLE] where PNO like  '%~_%'
0 голосов
/ 07 июня 2019

В SQL Server вы можете использовать:

SELECT TOP (1000) [PNO]
FROM [MYTABLE] 
WHERE PNO like  '%~%[^~]'

В других базах данных вы, вероятно, будете использовать регулярное выражение, например `'~. * [^ ~] $'.

В качестве последнего средства вы можете сделать это с like и not like:

WHERE PNO LIKE '%~%' AND PNO NOT LIKE '%~';
0 голосов
/ 07 июня 2019

Вы можете добавить второе условие к вашему выражению LIKE, чтобы исключить записи, заканчивающиеся тильдой:

SELECT TOP (1000) [PNO]
FROM [MYTABLE]
WHERE PNO LIKE '%~%' AND PNO NOT LIKE '%~';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...