php - mysql 中的 LIKE 'string' 和 LIKE '%string%' 工作不一样
问题描述
我对上面的标题感到困惑。
SELECT * FROM `parties` WHERE `party_name` LIKE '%DMK%' ORDER BY `id` ASC
在这里,我从 DB 中得到 4 行,所有行的 party_name 都在里面包含“DMK”。
SELECT * FROM `parties` WHERE `party_name` LIKE 'DMK' ORDER BY `id` ASC
在这里,我得到确切的一行,其中包含 party_name 作为 'DMK'
第一个查询是搜索字符串的一部分。第二个查询是搜索确切的字符串
是吗 ??
还是两者都一样?
抱歉问这种问题,谢谢
解决方案
如果您LIKE
不使用 % 通配符,则与等号 ( =
) 的行为相同。
所以如果你写:
SELECT * FROM parties WHERE party_name LIKE 'DMK' ORDER BY id ASC
是否相同:
SELECT * FROM parties WHERE party_name = 'DMK' ORDER BY id ASC
如果你写:
SELECT * FROM `parties` WHERE `party_name` LIKE '%DMK%' ORDER BY `id` ASC
您会找到所有包含 DMK 的party_name
如果你写:
SELECT * FROM `parties` WHERE `party_name` LIKE '%DMK' ORDER BY `id` ASC
您会发现所有party_name 都以 DMK 结尾
如果你写:
SELECT * FROM `parties` WHERE `party_name` LIKE 'DMK%' ORDER BY `id` ASC
您会发现所有party_name 都以 DMK 开头
推荐阅读
- sql - ASP.NET Windows 身份验证 - 用户“NT AUTHORITY/ANONYMOUS LOGON”登录失败
- javascript - 当我使用 Python (Windows 10) 发送本地文件地址时,我试图找到一种让浏览器读取我的 URL 参数的方法
- sql-server - 如何使用 SSIS 表达式将 dd.mm.yyyy 格式的字符串转换为日期?
- python - Python 3:如何根据范围函数创建列表列表
- java - 安装后第一个应用程序运行时相机无法正常工作
- amazon-s3 - 神社图片上传器未正确安装
- docker - 在 docker-compose 中设置内存限制会出错
- python - 从列表中获取匹配字符串并创建新列表
- python - 有人可以解释这段代码来识别两个数据帧之间的差异吗?
- java - 将私钥放入带有变量的 application.yml