sqlite android选择col(x),其中(col1-like';%key%';)或(col2-like';%key%';)-和x是包含键的列

sqlite android选择col(x),其中(col1-like';%key%';)或(col2-like';%key%';)-和x是包含键的列,android,sql,sqlite,select,Android,Sql,Sqlite,Select,我需要sql语句是这样的: 选择列(x),其中(类似于“%key%”的列1)或(类似于“%key%”的列2)或….-x是包含键(patern)的列 更准确地说,我有一个包含文本列col1、col2、col3、col4等的表 现在我想在所有这些列中找到一个给定的模式(如)。但是,作为select的结果,我希望得到找到模式的列内容(在我的“语句”中,我将其标记为col(x) 开放性的问题是,如果同一语句的两列或多列包含相同的模式,该怎么办。例如,我可以得到类似于col(x),col(y)的内容,但这

我需要sql语句是这样的:

选择列(x),其中(类似于“%key%”的列1)或(类似于“%key%”的列2)或….-x是包含键(patern)的列

更准确地说,我有一个包含文本列col1、col2、col3、col4等的表

现在我想在所有这些列中找到一个给定的模式(如)。但是,作为select的结果,我希望得到找到模式的列内容(在我的“语句”中,我将其标记为col(x)

开放性的问题是,如果同一语句的两列或多列包含相同的模式,该怎么办。例如,我可以得到类似于col(x),col(y)的内容,但这不是必须的。任何其他合理的解决方案都是受欢迎的

问题是我需要怎样写这样一份声明

提前感谢您的帮助。

您可以使用搜索栏:

SELECT CASE WHEN col1 LIKE :pattern THEN col1
            WHEN col2 LIKE :pattern THEN col2
            ...
       END AS colx
FROM MyTable
WHERE col1 LIKE :pattern OR col2 LIKE :pattern OR ...
您可以使用来搜索列:

SELECT CASE WHEN col1 LIKE :pattern THEN col1
            WHEN col2 LIKE :pattern THEN col2
            ...
       END AS colx
FROM MyTable
WHERE col1 LIKE :pattern OR col2 LIKE :pattern OR ...

非常感谢。但是我想知道效率,因为实际上每个列都会“执行”两次。还有一件事,可能只有一个吗?因为在使用SQLiteDatabase.rawQuery时,我将不得不添加这么多参数。。。(好的,我可以用sql语句创建字符串,但我想知道是否有更优雅的解决方案)?这种情况将只对实际匹配的记录执行,数据库性能主要取决于I/O的数量。非常感谢。但是我想知道的是,实际上,like将被“执行”的效率每列两次。还有一件事,是否可能只有一个?,因为在使用SQLiteDatabase.rawQuery时,我将不得不添加这么多参数…(好的,我可以在使用sql语句创建字符串时这样做,但我想知道是否有更优雅的解决方案)?案例将仅针对实际匹配的记录执行,数据库性能主要取决于I/O量。