Mysql INSTR帮助仅搜索与更多文本匹配的一行
我有一个带区域代码的桌子房间Mysql INSTR帮助仅搜索与更多文本匹配的一行,mysql,string,sql-order-by,where-clause,sql-limit,Mysql,String,Sql Order By,Where Clause,Sql Limit,我有一个带区域代码的桌子房间 code BED 6 BED 6 DEM 我有一个文本要搜索,比如“。。。6号床 如果我在仪器(“…床6 DEM…”,代码)>0的房间选择* 我得到这两行: code BED 6 BED 6 DEM 但我只想得到1:BED 6 DEM 有时我只需要从INSTR(“…床6…”,code)>0的房间中选择* 只排一行 code BED 6 用它就可以了 是否建议始终只获取最佳匹配行?您可以通过降低匹配字符串的长度对结果进行排序,并仅获取第一个结果: SELEC
code
BED 6
BED 6 DEM
我有一个文本要搜索,比如“。。。6号床
如果我在仪器(“…床6 DEM…”,代码)>0的房间选择*
我得到这两行:
code
BED 6
BED 6 DEM
但我只想得到1:BED 6 DEM
有时我只需要从INSTR(“…床6…”,code)>0的房间中选择*
只排一行
code
BED 6
用它就可以了
是否建议始终只获取最佳匹配行?您可以通过降低匹配字符串的长度对结果进行排序,并仅获取第一个结果:
SELECT *
FROM room r
WHERE INSTR('... BED 6 DEM ...', code) > 0
ORDER BY CHAR_LENGTH(code) DESC
LIMIT 1
另一个选项是使用notexists
条件和相关子查询来匹配包含搜索字符串的longuest,如:
SELECT *
FROM room r
WHERE INSTR('... BED 6 DEM ...', code) > 0
AND NOT EXISTS (
SELECT 1
FROM room r1
WHERE
INSTR('... BED 6 DEM ...', r1.code) > 0
AND CHAR_LENGTH(r1.code) > CHAR_LENGTH(r.code)
)
我喜欢第一个@GMB是天才!谢谢!:-)