Подтвердить что ты не робот

Строка соответствия mysql с началом строки в таблице

Я понимаю, что было бы намного проще, если бы я мог изменить таблицу, когда она была создана, но, полагая, что я не могу, у меня есть таблица, такая как:

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

Значения в таблице не являются фиксированной длиной. У меня есть строка для соответствия, например, abffagpokejfkjs. Если бы это было наоборот, я мог бы сделать

SELECT * from table where value like 'abff%'

но мне нужно выбрать значение, соответствующее началу строки, которая предоставляется.

Есть ли быстрый способ сделать это, или ему нужна итерация через таблицу, чтобы найти совпадение?

4b9b3361

Ответ 1

Попробуйте следующее:

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

Обратите внимание, что это не будет эффективно использовать индекс, поэтому он будет медленным, если у вас много записей.

Также обратите внимание, что некоторые символы в value (например, %) могут быть интерпретированы LIKE как имеющие особое значение, что может быть нежелательным.