использование подстановочного знака для выбора имен, начинающихся с неработающего конкретного символа - PullRequest
1 голос
/ 27 марта 2019

Я пытаюсь использовать подстановочный знак, чтобы выбрать все имена в столбце first_name, который начинается с 'b', 's' или 'p', с помощью

SELECT first_name
from actor
where first_name like '[bsp]%';

Ответы [ 4 ]

2 голосов
/ 27 марта 2019

Вы не указали, какую версию MySQL вы используете, что меняет уровень поддержки регулярных выражений.В обратно совместимой версии (обратно к MySQL ~ v5.x) используются:

  1. Шаблон регулярного выражения .* вместо подстановочного знака MySQL %

  2. Маркер regexp для объявления того, что условие следует интерпретировать как регулярное выражение

SELECT first_name from actor where first_name regexp '[bsp].*?';

SQLFiddle

0 голосов
/ 27 марта 2019

Самый простой метод - это регулярное выражение:

where first_name regexp '^[bsp]';

В отличие от like шаблонов, регулярные выражения не обязательно должны соответствовать всему выражению. regexp возвращает true, если шаблон где-либо совпадает. Следовательно, эквивалент % не требуется (который будет .* в регулярном выражении).

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

where left(first_name, 1) in ('b', 's', 'p')
0 голосов
/ 27 марта 2019

Это также работает:

SELECT first_name FROM actor WHERE first_name REGEXP '^b|^s|^p';

Протестировано на MySQL 4.1 и MariaDB 10.3.10

0 голосов
/ 27 марта 2019

Я думаю, что должно быть:

SELECT first_name
from actor
where first_name like 'b%' or first_name like 's%' or first_name like 'p%';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...