2014-01-10 134 views
1

我寫了使用名稱過濾數據查詢查詢並寫了下面的查詢MySQL的喜歡與特殊字符「

SELECT * FROM (`abc`) WHERE (name LIKE "%test\'!&@#$\%-(3)\_er%") 

它應該返回已名字開始與文本‘測試’ 記錄,但它不會代替如果我修改查詢如

SELECT * FROM (`abc`) WHERE (name LIKE "%test%\'!&@#$\%-(3)\_er%") 

然後它會給出結果。爲什麼不給第一個查詢結果? 有沒有其他方法可以做到這一點?

+0

在第一個查詢'%test'應改爲'測試'%,但 – 2014-01-10 12:39:09

回答

5

%是在查詢通配符。
所以%test表示以test結尾的所有內容。
test%表示以test開頭的所有內容。
%test%意味着所有與test在一起。

的simpy改變你的查詢

SELECT * FROM ( ABC ) WHERE (name LIKE "test%")

+0

這是不工作這SELECT'client_id'從('客戶端')WHERE(client_name LIKE「%客戶@ $#%\'!&@#$ \% - (3)\ _er%」) –

+0

@priyanka patel SELECT client_id FROM(client)WHERE(client_name LIKE「_____%@ $#%\'!&@#$ \% - (3)_er%」) – GOPI

0

如果你想與test開始記錄,只需使用

SELECT * FROM (`abc`) WHERE (name LIKE "test%") 
+0

如果用戶輸入的搜索字符串的任何特殊字符,然後還應該工作。 –

+1

它不會返回,除非它存在,如果它的搜索查詢的一部分。那麼你必須過濾出特殊字符。 –