我意识到,如果我可以在创建表的时候修改它,那会容易得多,但假设我不能,我有一个表,如下所示:
abcd
abde
abdf
abff
bbsdf
bcggs
... snip large amount
zza
表中的值不是固定长度的。我有一个字符串可以匹配,比如abffagpokejfkjs。如果是另一种情况,我可以做
SELECT * from table where value like 'abff%'
但我需要选择与提供的字符串开头匹配的值。
有没有一种快速的方法可以做到这一点,或者需要遍历表格才能找到匹配项?
发布于 2012-03-12 20:49:11
试试这个:
SELECT col1, col2 -- etc...
FROM your_table
WHERE 'abffagpokejfkjs' LIKE CONCAT(value, '%')
请注意,这不会有效地使用索引,因此如果您有很多记录,则速度会很慢。
还要注意,value
中的一些字符(例如%
)可能会被同类解释为具有特殊含义,这可能是不希望的。
发布于 2020-05-08 07:53:27
可以通过将比较字符串截断为每个值的长度来避免LIKE
:
... WHERE LEFT('abffagpokejfkjs', LENGTH(value)) = value
https://stackoverflow.com/questions/9667243
复制相似问题