MySQL正则表达式查询不区分大小写

时间:2010-10-22 01:28:05

标签: mysql

在我的表格中,我有名字和姓氏。很少有名字是大写的(ABRAHAM),很少有名字是小写(亚伯拉罕),很少有名字是以ucword(亚伯拉罕)开头的。

所以当我使用REGEXP'^ [abc]'进行where条件时,我没有得到正确的记录。如何将名称更改为小写并使用SELECT QUERY。

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

这是我的查询,如果记录是小写的,可以正常工作,但我的记录是中间的,我的所有cus名称都不是小写,所有的名字都像ucword。

因此对于上面的查询,我没有得到正确的记录显示。

4 个答案:

答案 0 :(得分:13)

我认为您应该查询您的数据库,确保名称被降低,假设名称是您要找出的名称,并且在您的应用程序中,您已将其降低为“亚伯拉罕”,现在您的查询应该像这样:

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

由于我不知道你使用的是什么语言,我只是放了名字,但要确保降低这个名称,你应该检索亚伯拉罕,亚伯拉罕或任何名字的变体!

Hepe有帮助!

答案 1 :(得分:5)

你试过了吗?

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

答案 2 :(得分:1)

您不需要regexp来搜索以特定字符串或字符开头的名称。

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

%是通配符char。除非您为列cus_name设置二进制属性或使用二元运算符

,否则搜索不区分大小写
SELECT * FROM `test_tbl` WHERE BINARY cus_name LIKE 'abc%' ; 

答案 3 :(得分:0)

已经提供了一些有效的选项,但是仅使用正则表达式就可以了:

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