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



这是我的第一个问题,尽管我已经潜伏了很长一段时间。 我正在用 PHP/SQLite 编写一个 Web 应用程序,我正在尝试查找列名以及以下 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")进行通配符查找。

谢谢!

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

相关内容

  • 没有找到相关文章

最新更新