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

时间:2012-03-12 12:44:54

标签: mysql

我意识到如果我可以在创建表时修改表格会更容易,但假设我不能,我有一个如下的表:

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

表中的值不是固定长度。 我有一个匹配的字符串,如abffagpokejfkjs。 如果是相反的话,我可以做到

SELECT * from table where value like 'abff%'

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

有没有快速的方法,或者是否需要通过表格进行迭代才能找到匹配?

2 个答案:

答案 0 :(得分:38)

试试这个:

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

请注意,这不会有效地使用索引,因此如果您有大量记录,它将会很慢。

另请注意,value中的某些字符(例如%)可能被LIKE解释为具有特殊含义,这可能是不受欢迎的。

答案 1 :(得分:0)

通过将比较字符串截断为每个值的长度,可以避免

LIKE

... WHERE LEFT('abffagpokejfkjs', LENGTH(value)) = value