Строка соответствия mysql с началом строки в таблице
Я понимаю, что было бы намного проще, если бы я мог изменить таблицу, когда она была создана, но, полагая, что я не могу, у меня есть таблица, такая как:
abcd
abde
abdf
abff
bbsdf
bcggs
... snip large amount
zza
Значения в таблице не являются фиксированной длиной.
У меня есть строка для соответствия, например, abffagpokejfkjs.
Если бы это было наоборот, я мог бы сделать
SELECT * from table where value like 'abff%'
но мне нужно выбрать значение, соответствующее началу строки, которая предоставляется.
Есть ли быстрый способ сделать это, или ему нужна итерация через таблицу, чтобы найти совпадение?
Ответы
Ответ 1
Попробуйте следующее:
SELECT col1, col2 -- etc...
FROM your_table
WHERE 'abffagpokejfkjs' LIKE CONCAT(value, '%')
Обратите внимание, что это не будет эффективно использовать индекс, поэтому он будет медленным, если у вас много записей.
Также обратите внимание, что некоторые символы в value
(например, %
) могут быть интерпретированы LIKE как имеющие особое значение, что может быть нежелательным.