【问题标题】:mysql like query with special character 'mysql like 带有特殊字符的查询'
【发布时间】:2014-01-10 12:35:11
【问题描述】:

我使用名称编写了过滤数据查询并编写了以下查询

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

它应该返回名称以文本“test”开头的记录 但如果我修改查询,例如

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

然后它会给出结果。为什么第一次查询没有给出结果? 有没有其他方法可以做到这一点?

【问题讨论】:

  • 在您的第一个查询中,%test 应更改为 test%

标签: mysql codeigniter sql-like


【解决方案1】:

% 是查询中的通配符。
所以%test 表示以test 结尾的所有内容。
test% 表示以test 开头的所有内容。
%test% 表示包含test 的所有内容。

Simpy 将您的查询更改为

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

【讨论】:

  • 这不起作用 SELECT client_id FROM (client) WHERE (client_name LIKE "%Client@$#%\'!&@#$\%-(3)_er%" )
  • @priyanka patel SELECT client_id FROM (client) WHERE (client_name LIKE "_____%@$#%\'!&@#$\%-(3)_er%")
【解决方案2】:

如果您想要以test 开头的记录,只需使用

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

【讨论】:

  • 但是如果用户在搜索字符串中输入任何特殊字符,那么它也应该可以工作。
  • 它不会返回,除非它是搜索查询的一部分。那么你必须过滤掉特殊字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-23
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 1970-01-01
相关资源
最近更新 更多