Сделайте так, чтобы количество совпадений было напрямую связано с char_length столбца

У меня есть рабочее заявление SELECT. Тем не менее, я хотел бы добавить что-то к этому. Я хотел бы сделать так, чтобы количество требуемых совпадений напрямую соответствовало char_length столбца ‘input’. Так, например:

if (char_length(input) <= 5) { matches required is 1 }
if (char_length(input) > 5 && char_length(input) <= 10) { matches required is 2 }
if (char_length(input) > 10 && char_length(input) <= 15) { matches required is 3 }

and ect...

Как мне добавить ^^^ это в инструкцию SELECT ниже?

$text = "one";
$textLen = strlen($text);

SELECT response, ( input LIKE  '% $text %' ) as matches
FROM allData
WHERE (char_length(input) >= '$textLen'-($textLen*.1)
AND char_length(input) <= '$textLen'+($textLen*.1))
HAVING matches > 0
AND matches = (select max(( input LIKE  '% $text %' )) from allData) limit 30;

0

Решение

Сначала запустите следующий запрос отдельно:

SELECT @limit := 0;

Затем измените ваш запрос, чтобы он выглядел так:

SELECT response, ( input LIKE  '% $text %' ) as matches, @limit := @limit + 1
FROM allData
WHERE (char_length(input) >= '$textLen'-($textLen*.1)
AND char_length(input) <= '$textLen'+($textLen*.1))
AND @limit < CEIL(CHAR_LENGTH(input) / 5)
HAVING matches > 0
AND matches = (select max(( input LIKE  '% $text %' )) from allData) limit 30;

Это должно ограничить ваши совпадения до необходимых значений

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]