Как найти записи с частичными значениями FROM ... TO? - PullRequest
1 голос
/ 20 февраля 2012

У меня есть БД со следующими значениями

! # ! FROM ! TO   !
!===!======!=======
! 1 ! aaaa ! aabb !
! 2 ! aa10 ! aa2a !
! 3 ! bb   ! cc   !
! 4 ! bb 20! bb 30!
! 5 ! bccc ! bccd !

ОТ и ДО может охватывать любой диапазон. Все поддерживаемые символы разрешены. ОТ и ДО могут иметь разную длину. БД имеет ~ 800'000 строк. Строки имеют столбцы mor, которые важны для варианта использования.

Для поля автозаполнения Мне нужно найти все записи, которые совпадают где-то между (включая) ОТ и ТО.

Я пробовал что-то вроде этого:

SELECT *
FROM table WHERE (
  '11' BETWEEN from AND to
)

К сожалению, это не совпадает для FROM = 1105 и TO = 1110.

Как будет выглядеть правильный запрос для этого?

1 Ответ

0 голосов
/ 21 февраля 2012

Редактировать: вопрос был немного изменен, поэтому меняю ответ, так как я все равно на 0:)

То, что вы хотите, является чем-то похожим; ('b' - искомая строка, обратите внимание, что в вопросе она упоминается дважды)

SELECT * FROM table1 WHERE 'b'
  BETWEEN SUBSTR(`FROM`, 1, CHAR_LENGTH('b')) 
      AND `TO`;

Конечно, если вы знаете искомую строку и ее длину, вы можете заменить CHAR_LENGTH() в реальном коде.

Демо здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...