Найти слова с номерами sql как - PullRequest
0 голосов
/ 28 октября 2019

Существует table1

| ID  | Attr       |
+-----+------------+ 
| 169 | Jur9       |
| 169 | Jur9_name  |
| 169 | Jur10      |
| 169 | Jur10_name |    

И запрос:

select *
  from table1
 where ID = 169
   and ATTR like 'Jur_';    

Результат:

| ID  | Attr       |
+-----+------------+ 
| 169 | Jur9       |      

Ожидаю результата:

| ID  | Attr       |
+-----+------------+ 
| 169 | Jur9       |
| 169 | Jur10      |  

Ответы [ 2 ]

4 голосов
/ 28 октября 2019

Подстановочный знак _ соответствует ровно одному символу. Итак, это выражение:

WHERE ATTR like 'Jur_'

Ищет ATTR значения, которые состоят из четырех символов, начинающихся с 'Jur'.

Вы можете делать то, что хотите, используя LIKE и NOT LIKE:

WHERE ATTR LIKE 'Jur%' AND ATTR NOT LIKE 'JUR%$_%' ESCAPE '$'

То есть, за которым следует что угодно, но не подчеркивание.

Или вы можете использовать regexp_like():

WHERE REGEXP_LIKE(ATTR, '^JUR[^_]+$')
0 голосов
/ 28 октября 2019

Вы можете попробовать ниже -

select *
  from table1
 where ID = 169
   and ATTR not like '%_name'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...