2010-10-22 976 views
6

在我的表中,我有姓和名。很少有名字是大写字母(ABRAHAM),很少名字是小写字母(亚伯拉罕),很少名字是以ucword(亚伯拉罕)开头的字符。MySQL正则表达式查询不区分大小写

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

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

这是我的查询,如果该记录是小写工作正常,但我的记录是中间,我的所有CU的名字都不会降低的情况下,所有的名字都像ucword。

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

+2

什么实际的问题是你想解决? REGEXP几乎总是一个错误的解决方案。 – zerkms 2010-10-22 01:30:58

+0

也是我上面的正则表达式查询显示以U,V,W,ALL ALPHABETS开头,上面REGEXP不工作 – Bharanikumar 2010-10-22 01:47:00

+0

而且我想搜索名称以a或b或c开头, – Bharanikumar 2010-10-22 01:51:38

回答

10

我想你应该查询你的数据库,确保名称被降低了,假设这个名字是你想要找到的名字,并且在你的应用程序中你已经降低了它的名字,如'abraham',现在你的查询应该是像这样:

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

因为我不知道你用什么语言,我刚放置的名字,但要确保,这是降低你应该检索亚伯拉罕,亚伯拉罕或姓名的任何变化!

Hepe it help!

+0

REGEXP'^ [[:<:]]b.*[[:>:] ]'这渲染记录名称以b开始,但如果我添加或条件,则显示REGEXP'^ [[:<:]] b。* | c。* [[:>:]]'所有记录,即开始与什么喜欢f,t,h,u但根据我的条件,它应该只呈现以b和c字符名开头, – Bharanikumar 2010-10-22 02:50:02

0

您不需要使用正则表达式来搜索以特定字符串或字符开头的名称。

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

%是通配符字符。搜索不区分大小写,除非您为列cus_name二进制属性或使用二进制运算符

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

您的查询搜索名称以字符串'abc'开头的名称与OP搜索的查询非常不同名称以'a'或'b'或'c'开头。 – codaddict 2010-10-22 11:24:13

+0

我想上面是错误的,我们应该REGEXP'^ [ABC]' – Bharanikumar 2010-10-22 17:03:20

+0

我假设用户正试图建立一个“搜索你键入”字段/工具。 – aeon 2010-10-25 11:38:31

4

您是否尝试过:

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