我发现自己处于一个不熟悉的数据库的位置,该数据库的每个表都有大量的列。我对要查找的数据有所了解,但我不知道该数据位于哪一列中,因此需要使用like来查找所需的确切数据(并且必须对多组重复此任务数据的)。

有没有办法像笛卡尔选择一样应用?

以下内容将说明我想做的更好的一点(即使在语法上很荒谬):

select
    *
from
    a_table
where
    * like '%x%'


编辑:

请注意,我无意在任何报告中使用直角坐标选择-此处的目的是帮助我确定需要放入查询中的相关列,并帮助我熟悉数据库。

最佳答案

通常-不可能以合理的方式(无需挖掘数据库元数据),但是如果您知道列的名称,则可以使用以下技巧:

select
    YourTable.*
FROM YourTable
JOIN
(
    select
      id,
      ISNULL(column1,'')+ISNULL(Column2,'')+...+ISNULL(ColumnN,'') concatenated
      FROM YourTable
) T ON T.Id = YourTable.Id
where   t.concatenated like '%x%'


要么

如果您搜索单词,请使用FTS功能,因为高级查询是性能杀手

10-06 13:58