Как использовать регулярное выражение в SQL, которое найдет только одну строку - PullRequest
1 голос
/ 07 апреля 2020

У меня есть таблица с 3 строками, я хотел бы получить только первую строку, используя оператор like. Когда я использую select value from table where value like '%Motor%%Fans%%9%', он возвращает две строки: первую и вторую. Как исключить эти строки, которые имеют разное значение c до 9?

VALUE
Motor Fans Base 9
Motor Fans Base 49
Motor Fans Base 13

Ответы [ 2 ]

0 голосов
/ 07 апреля 2020

Вы можете использовать like. Просто используйте пробел перед последним 9 и удалите окончательный %:

where value like '%Motor%Fans% 9'

Если вы также хотите сопоставить значения, которые заканчиваются на 91 или 903, тогда подходит последний подстановочный знак:

where value like '%Motor%Fans% 9%'
0 голосов
/ 07 апреля 2020

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

where regexp_like(value, 'Motor.*Fans\D*9')

Распределение регулярных выражений:

Motor         # litteral string "Motor"
.*            # 0 to n characters
Fans          # litteral string "Fans"
\D*           # 0 to n non-digit characters
9             # a litteral "9"
...