2010-10-22 60 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]';