MySQL Выберите, где столбец равен части строки - PullRequest
0 голосов
/ 04 ноября 2018

Я пытаюсь выяснить, есть ли запрос для этого:

Значение таблицы col:

harken op het strand

Входная строка:

Jantje ging harken op het strand omdat hij daar zin in had.

Результат (1 строка): id "1", value "harken op het strand";

Входная строка:

Jantje ging met harken het strand op omdat hij daar zin in had.

Результат: пусто.

Я понимаю, что это должно быть примерно так:

SELECT *
FROM table
WHERE value LIKE 'Jantje ging harken op het strand omdat hij daar zin in had.'

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

Ответы [ 3 ]

0 голосов
/ 04 ноября 2018

Для небольшой модификации ответа Гордона мы можем попробовать использовать REGEXP здесь с правильными границами слова:

SELECT t.*
FROM yourTable t
WHERE
    'Jantje ging harken op het strand omdat hij daar zin in had.'
    REGEXP CONCAT('[[:<:]]', t.value, '[[:>:]]');
0 голосов
/ 04 ноября 2018

Другая возможность - использование функции Locate(). может быть более производительным, чем Like %..%. Мы просто проверим первое вхождение значения поля (столбца) (подстроки) во входной строке. Если он существует, мы нашли соответствие:

SELECT *
FROM your_table_name 
WHERE LOCATE(value, 'Jantje ging harken op het strand omdat hij daar zin in had.') > 0
0 голосов
/ 04 ноября 2018

Я думаю, вы хотите LIKE в другом порядке:

SELECT t.*
FROM table t
WHERE 'Jantje ging harken op het strand omdat hij daar zin in had.' LIKE CONCAT('%', t.value, '%')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...