mysql 匹配表中字符串的开头。

问题描述 投票:18回答:2

我意识到,如果我可以在创建表格时修改它,那就简单多了,但假设我不能,我有一个表格,是这样的。

abcd
abde
abdf
abff
bbsdf
bcggs
... snip large amount
zza

表中的值不是固定长度的 我有一个字符串来匹配,比如abffagpokejfkjs .如果是反过来,我可以这样做

SELECT * from table where value like 'abff%'

但我需要选择与提供的字符串开头相匹配的值。

有没有一种快速的方法可以做到这一点,还是需要在表中进行迭代才能找到匹配的值?

mysql
2个回答
40
投票

试试这个。

SELECT col1, col2 -- etc...
FROM your_table
WHERE 'abffagpokejfkjs' LIKE CONCAT(value, '%')

请注意,这样做不能有效地使用索引 所以如果你有很多记录,速度会很慢。

另外,请注意,有些字符在 value (如 %)可能会被LIKE解释为有特殊含义,这可能是不可取的。


0
投票

LIKE 可以通过将比较字符串截断到每个值的长度来避免这种情况。

... WHERE LEFT('abffagpokejfkjs', LENGTH(value)) = value
© www.soinside.com 2019 - 2024. All rights reserved.