MySQL регулярных выражений без учета регистра - PullRequest
9 голосов
/ 22 октября 2010

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

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

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

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

Так что для этого запроса не отображается правильное отображение записей.

Ответы [ 3 ]

14 голосов
/ 22 октября 2010

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

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

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

Hepe это помогает!

5 голосов
/ 22 октября 2010

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

SELECT * FROM `test_tbl` WHERE LOWER(cus_name) REGEXP '^[abc]';
1 голос
/ 22 октября 2010

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

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

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

SELECT * FROM `test_tbl` WHERE BINARY cus_name LIKE 'abc%' ; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...