2014-01-10 135 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

它不会返回,除非它存在,如果它的搜索查询的一部分。那么你必须过滤出特殊字符。 –