gpt4 book ai didi

mysql - 反向 LIKE %...% 可能吗?

转载 作者:可可西里 更新时间:2023-11-01 07:22:29 24 4
gpt4 key购买 nike

简而言之,我想将字典条目与一行文本匹配,但它不必匹配整行,只需匹配开头即可。所以它实际上是一种反向 LIKE %...%

例如,

SELECT * FROM `dictionary` WHERE
(`simplified` = '铅笔的历史非常悠久,它起源于2000多年'
OR `simplified` = '铅笔的历史非常悠久,它起源于2000多'
OR `simplified` = '铅笔的历史非常悠久,它起源于2000'
OR `simplified` = '铅笔的历史非常悠久,它起源于200'
OR `simplified` = '铅笔的历史非常悠久,它起源于20'
OR `simplified` = '铅笔的历史非常悠久,它起源于2'
OR `simplified` = '铅笔的历史非常悠久,它起源于'
OR `simplified` = '铅笔的历史非常悠久,它起源'
OR `simplified` = '铅笔的历史非常悠久,它起'
OR `simplified` = '铅笔的历史非常悠久,它'
OR `simplified` = '铅笔的历史非常悠久,'
OR `simplified` = '铅笔的历史非常悠久'
OR `simplified` = '铅笔的历史非常悠'
OR `simplified` = '铅笔的历史非常'
OR `simplified` = '铅笔的历史非'
OR `simplified` = '铅笔的历史'
OR `simplified` = '铅笔的历'
OR `simplified` = '铅笔的'
OR `simplified` = '铅笔'
OR `simplified` = '铅')
ORDER BY CHAR_LENGTH(`simplified`) DESC;

这行得通并且可以满足我的需要,但我知道它的效率非常低。还有其他方法吗?帮助非常感谢!!

示例结果:

97576   铅笔
97484 铅
97566 铅

最佳答案

怎么样

WHERE `simplified` = SUBSTRING(
'铅笔的历史非常悠久,它起源于2000多年',
0, CHAR_LENGTH(`simplified`))

?可能不可索引,但至少查询很短。 :)

你可以通过添加优化它

AND `simplified` LIKE '铅%'

拒绝所有未至少以正确字符开头的行。

关于mysql - 反向 LIKE %...% 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22534676/

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