首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用MySQL中具有大量特殊字符(%)的like查询数据

问无法使用MySQL中具有大量特殊字符(%)的like查询数据
EN

Stack Overflow用户
提问于 2022-05-17 08:22:30
回答 2查看 49关注 0票数 1

我将下面的值插入到用户表中,

代码语言:javascript
复制
~\`!@%23$%^%26*()-=_+{}[]|\\:;\"'<>?,./

然后用like查询它,got什么也没有,但是=工作正确,为什么LIKE子句不能工作呢?

准备数据

代码语言:javascript
复制
CREATE TABLE `users` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
   PRIMARY KEY (`id`)
);

insert into users(name) values('~`!@%23$%^%26*()-=_+{}[]|\\\\:;\\"\'<>?,./'); 
insert into users(name) values('test'); 

查询

代码语言:javascript
复制
select * from users where name like '%~`!@%23$%^%26*()-=\_+{}[]|\\\\:;\\"\'<>?,./%'; // Got nothing

select * from users where name='~`!@%23$%^%26*()-=_+{}[]|\\\\:;\\"\'<>?,./';  // Got the inserted data

即使我逃过了%和_,它还是不起作用。

代码语言:javascript
复制
select * from users where name like '%~`!@\%23$\%^\%26*()-=\_+{}[]|\\\\:;\\"\'<>?,./%'; // Still got nothing

预期

执行时

代码语言:javascript
复制
select * from users where name like '%~`!@%23$%^%26*()-=\_+{}[]|\\\\:;\\"\'<>?,./%'; // Got nothing

它应该只得到这张唱片

代码语言:javascript
复制
~\`!@%23$%^%26*()-=_+{}[]|\\:;\"'<>?,./
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-17 08:40:16

您可以像这样使用concat (不确定MySQL或其他DB类型,但原则是相同的):

代码语言:javascript
复制
select * from users 
where name like
'%' || '~`!@%23$%^%26*()-=\_+{}[]|\\\\:;\\"\'<>?,./' || '%';

这是[医]小提琴

由于新行的新问题,我用ESCAPE.修复了我的代码。

代码语言:javascript
复制
select *
from users 
where name like 
 '%~`!@%23$#%^#%26*()-=\_+{}[]|\\\\:;\\"\'<>?,./%' --<< escape # before % character
escape '#';

这是新dbfiddle

票数 2
EN

Stack Overflow用户

发布于 2022-05-17 09:13:37

您可以使用INSTR:

代码语言:javascript
复制
SELECT * FROM users 
WHERE INSTR(name, '~`!@%23$%^%26*()-=\_+{}[]|\\\\:;\\"\'<>?,./') > 0 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72270534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档