SQL-запрос для поиска имени столбца, в котором совпадает текст в столбце - PullRequest
0 голосов
/ 19 мая 2011

Это мой первый вопрос о stakverflow, хотя я скрывался довольно давно.Я пишу веб-приложение на PHP / SQLite и пытаюсь найти имя столбца вместе со следующим запросом SQL:

SELECT lexemeid FROM lexeme, sense WHERE lexeme.lexemeid =
sense.senselexemeid AND (lexeme.lexeme LIKE '%apani%' OR lexeme.variant
LIKE '%apani%' OR lexeme.affixedform LIKE '%apani%' OR sense.example
LIKE '%apani%');

По сути, я предлагаю полнотекстовый поиск для некоторыхразные поля.Приведенный выше запрос работает, но я хотел бы получить имя столбца, в котором мой шаблон также подходит для каждого результата.По сути, я хочу что-то вроде вышеупомянутого запроса с SELECT, похожего на:

SELECT lexemeid, COLUMN NAME FROM...

Я также приветствовал бы любые идеи для улучшения / улучшения моего SQL-запроса (возможно, используя LIKE и IN ??).Я в основном пытаюсь объединить lexeme.lexemeid и sense.senselexemeid и выполнить поиск по шаблону для текстовой строки (в данном случае, «apani»).

Спасибо!

1 Ответ

1 голос
/ 19 мая 2011

Если у вас есть совпадение только в одном из столбцов, вы можете использовать оператор CASE.

SELECT lexemeid,
       CASE WHEN lexeme.lexeme LIKE '%apani%' THEN 'lexeme'
            WHEN lexeme.variant LIKE '%apani%' THEN 'variant'
            ...
            WHEN sense.example LIKE '%apani%' THEN 'example'
       END AS ColumnName
    FROM ...
...