Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql INSTR帮助仅搜索与更多文本匹配的一行_Mysql_String_Sql Order By_Where Clause_Sql Limit - Fatal编程技术网

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是天才!谢谢!:-)