反转LIKE%...%可能吗?

Dom*_*and 4 mysql

简而言之,我想将字典条目与一行文本匹配,但它不必匹配整行,只是开头.所以它实际上是一种反向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;
Run Code Online (Sandbox Code Playgroud)

这有效并且做我需要的但是我知道它非常低效.这样做还有其他办法吗?非常感谢!!

示例结果:

97576   ??
97484   ?
97566   ?
Run Code Online (Sandbox Code Playgroud)

hob*_*bbs 6

怎么样

WHERE `simplified` = SUBSTRING(
  '??????????????2000??',
  0, CHAR_LENGTH(`simplified`))
Run Code Online (Sandbox Code Playgroud)

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

你可以通过添加来优化它

AND `simplified` LIKE '?%'
Run Code Online (Sandbox Code Playgroud)

拒绝所有至少不以正确字符开头的行.