mysql模糊查询
一、基础:
使用 LIKE
和通配符
-
%
:匹配任意多个字符(包括 0 个字符)。 -
_
:匹配单个字符。
示例:
-- 查询以 "张" 开头的名字
SELECT * FROM users WHERE name LIKE '张%';-- 查询包含 "apple" 的字段(不区分位置)
SELECT * FROM products WHERE description LIKE '%apple%';-- 查询第二个字符是 "o" 的单词(如 "Tom")
SELECT * FROM words WHERE word LIKE '_o%';-- 查询长度为 3 且以 "A" 结尾的名字(如 "Bob" 不匹配,"Ana" 匹配)
SELECT * FROM names WHERE name LIKE '__A';
补充:比如“apple pie”、“pineapple”和“snapple”都会被选中
二、例子
and rr.detail like concat('%"', #{targetSys}, '"%')
查询 rr.detail
字段中包含某个 JSON 格式中 targetSys
值的记录
🔍 语法拆解
-
rr.detail
:表示数据库表中某一字段(通常是TEXT
或VARCHAR
类型),里面存储的是 JSON 格式的字符串。 -
like
:SQL 中用于模糊匹配。 -
concat('%"', #{targetSys}, '"%')
:构造一个形如%"xxx"%
的字符串,用于匹配detail
字符串中是否包含"xxx"
(注意双引号)。-
举例:如果
#{targetSys}
是HIS
,那么这段语句最终变成: -
rr.detail like '%"HIS"%'
-
注意;这里是查带“”的字符串