Неверный запрос запроса регулярного выражения MySQL

В моей таблице у меня есть имя и фамилия. Несколько имен - это верхний регистр (ABRAHAM), несколько имен - строчные буквы (abraham), несколько имен - символ, начинающийся с ucword (Abraham).

Итак, когда я выполняю условие where, используя REGEXP '^ [abc]', я не получаю надлежащих записей. Как изменить имена в нижнем регистре и использовать SELECT QUERY.

SELECT * FROM `test_tbl` WHERE cus_name REGEXP '^[abc]';

Это мой запрос, отлично работает, если записи являются строчными, но мои записи являются промежуточными, мое имя cus не является строчным, все имена похожи на ucword.

Таким образом, для этого выше запроса не отображаются правильные записи.

Ответ 1

Я думаю, вы должны запросить свою базу данных, убедившись, что имена опущены, предположим, что это имя, которое вы хотите узнать, и в своем приложении вы опустили его как "абрахам", теперь ваш запрос должен быть похож это:

SELECT * FROM `test_tbl` WHERE LOWER(cus_name) = name

Так как я не знаю, какой язык вы используете, я просто поместил имя, но удостоверьтесь, что это опустилось, и вы должны получить Abraham, ABRAHAM или любое изменение имени!

Hepe помогает!

Ответ 2

Вы пробовали:

SELECT * FROM `test_tbl` WHERE LOWER(cus_name) REGEXP '^[abc]';

Ответ 3

Вам не нужно regexp для поиска имен, начинающихся с определенной строки или символа.

SELECT * FROM `test_tbl` WHERE cus_name LIKE 'abc%' ; 

% - это подстановочный знак char. Поиск не зависит от регистра, если вы не установили двоичный атрибут для столбца cus_name или используете двоичный оператор

SELECT * FROM `test_tbl` WHERE BINARY cus_name LIKE 'abc%' ; 

Ответ 4

Несколько действительных опций уже представлены, но вот еще один с регулярным выражением:

SELECT * FROM 'test_tbl' WHERE cus_name REGEXP '^[abcABC]';