用于查找匹配文本在列中的列名的SQL查询

时间:2011-05-18 21:24:50

标签: sql sqlite wildcard

这是我的第一个stakoverflow问题,虽然我潜伏了很长一段时间。我正在用PHP / SQLite编写一个webapp,我正在尝试查找列名以及以下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 个答案:

答案 0 :(得分:1)

假设您只在其中一列中匹配,则可以使用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 ...