gpt4 book ai didi

Mysql INSTR 帮助仅搜索匹配更多文本的 1 行

转载 作者:行者123 更新时间:2023-11-29 07:17:51 24 4
gpt4 key购买 nike

我有一个带字段代码的表室

code
BED 6
BED 6 DEM

我有一个文本要搜索,例如“... BED 6 DEM ...”

如果我执行 SELECT * FROM room WHERE INSTR('... BED 6 DEM ...',code) >0

我得到这两行:

code
BED 6
BED 6 DEM

但我只想得到 1:BED 6 DEM

有时我只需要SELECT * FROM room WHERE INSTR('... BED 6 ...',code) >0

只得到 1 行

code
BED 6

可以的

关于始终只获取最佳匹配行的任何建议?

最佳答案

您可以按匹配字符串的长度降序对结果进行排序,只得到第一个结果:

SELECT *
FROM room r
WHERE INSTR('... BED 6 DEM ...', code) > 0
ORDER BY CHAR_LENGTH(code) DESC
LIMIT 1

另一种选择是使用带有相关子查询的 NOT EXISTS 条件来匹配包含搜索字符串的 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)
)

关于Mysql INSTR 帮助仅搜索匹配更多文本的 1 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58245974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com