如何在表的所有列中动态查找关键字

相对湿度

我希望能够在表的所有列中动态查找特定的关键字。该脚本的目的是只需要更改关键字和表名,而无需知道表的所有列是什么。

这意味着以下代码不是令人满意的解决方案:

[...]在哪里“关键字”输入(字段1,字段2,字段3,字段4,...)[...]

我能够使用子查询动态检索表的所有列名。但是然后,该子查询中的IN语句返回空结果。

然后,我创建了一个新的子查询,该子查询以逗号分隔的列表格式返回列的列表。但是结果也是空的。

到目前为止,这是脚本:

DECLARE @DATABASE_NAME VARCHAR(128)
DECLARE @SCHEMA_NAME VARCHAR(128)
DECLARE @TABLE_NAME VARCHAR(128)
DECLARE @KEYWORD VARCHAR(128)
DECLARE @QUERY01 VARCHAR(MAX)
DECLARE @QUERY02 VARCHAR(MAX)
DECLARE @SUBQUERY01 VARCHAR(MAX)
DECLARE @SUBQUERY02 VARCHAR(MAX)

SET @DATABASE_NAME = '[xxx]'
SET @SCHEMA_NAME = '[dbo]'
SET @TABLE_NAME = 'tblCustomers'
SET @KEYWORD = 'Jean'

SET @SUBQUERY01 = 'SELECT Name FROM sys.columns WHERE object_id = (SELECT 
object_id FROM sys.tables WHERE name = ''' + @TABLE_NAME + ''')'
SET @SUBQUERY02 = 'SELECT SUBSTRING((SELECT '', '' + Name FROM 
sys.columns WHERE object_id = (SELECT object_id FROM sys.tables WHERE 
name = ''' + @TABLE_NAME + ''') FOR XML PATH('''')), 2, 1000000)'

SET @QUERY01 = 'SELECT * FROM ' + @DATABASE_NAME + '.' + @SCHEMA_NAME + 
'.' + @TABLE_NAME
-- + ' WHERE ''' + @KEYWORD + ''' IN (FirstName, LastName)' -- Works                    
+ ' WHERE ''' + @KEYWORD + ''' IN (' + @SUBQUERY01 + ')'

SET @QUERY02 = 'SELECT * FROM ' + @DATABASE_NAME + '.' + @SCHEMA_NAME + 
'.' + @TABLE_NAME
+ ' WHERE ''' + @KEYWORD + ''' IN (' + @SUBQUERY02 + ')'

EXEC (@SUBQUERY01)  -- OK (List of column names, one per row)
EXEC (@SUBQUERY02)  -- OK (List of column names, comma-separated values)

EXEC (@QUERY01)     -- NOK (Empty result)
EXEC (@QUERY02)     -- NOK (Empty result)

我希望脚本返回其中一列中包含关键字的所有行。例如,以下代码可以正常工作:

SELECT * FROM [xxx].[dbo].tblCustomers
WHERE 'Jean' IN (FirstName, LastName)
拉努

这可能是您所追求的。请注意,我将搜索限制为仅查看字符串类型的列,正确引用对象(使用QUOTENAME)并参数化以下语句:

DECLARE @Schema sysname,
        @Table sysname,
        @Keyword varchar(100);

DECLARE @SQL nvarchar(MAX);
SET @Schema = N'dbo';
SET @Table = N'icp_yyclient';
SET @Keyword = 'Smith';

SET @SQL = N'SELECT *' + NCHAR(13) + NCHAR(10) + 
           N'FROM ' + QUOTENAME(@Schema) + N'.' + QUOTENAME(@Table) + NCHAR(13) + NCHAR(10) + 
           N'WHERE @Keyword IN (' + STUFF((SELECT N',' + QUOTENAME(C.[name])
                                           FROM sys.columns c
                                                JOIN sys.tables t ON c.object_id = t.object_id
                                                JOIN sys.schemas s ON t.schema_id = s.schema_id
                                                JOIN sys.types ct ON c.system_type_id = ct.system_type_id
                                            WHERE t.[name] = @Table
                                              AND s.[name] = @Schema
                                              AND ct.[name] IN (N'varchar',N'char',N'nvarchar',N'nchar',N'sysname')
                                            FOR XML PATH(N''),TYPE).value('.','nvarchar(MAX)'),1,1,N'') + N');';
PRINT @SQL; --Your best friend

EXEC sp_executesql @SQL, N'@Keyword varchar(100)', @Keyword;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何查找频率表关键字列是否包含列表中的所有值

来自分类Dev

如何使用Spark在文本表中查找关键字?

来自分类Dev

如何在字符串中查找关键字

来自分类Dev

如何在R中的数据框的特定列中查找和替换某些关键字?

来自分类Dev

如何在Clojure中创建动态关键字?

来自分类Dev

如何在Windows Form C#中获取与该关键字相关的所有网站

来自分类Dev

查找关键字之间的所有信息

来自分类Dev

在完全匹配的文本中查找所有关键字及其索引c#

来自分类Dev

在Linux中查找包含文件的所有目录,该文件包含关键字

来自分类Dev

动态生成的IQueryable查找关键字

来自分类Dev

如何在Vue中选择所有具有特定关键字的$ ref?

来自分类Dev

如果用户键入*作为关键字,则显示表中的所有条目

来自分类Dev

在字符串熊猫列中查找多个关键字的更有效方法

来自分类Dev

如何在 ssh_config(5) 中查找密码关键字

来自分类Dev

如何在 Python 的字典键中查找多个关键字

来自分类Dev

如何在类css中使用特定关键字向所有div添加样式

来自分类Dev

如何通过Java在IPersistentMap中查找Clojure关键字?

来自分类Dev

如何使用VsVim在多个文件中查找关键字

来自分类Dev

如何使用VsVim在多个文件中查找关键字

来自分类Dev

如何从Java查找IPersistentMap中的Clojure关键字?

来自分类Dev

在所有DataFrame列中搜索关键字并进行过滤

来自分类Dev

检查所有关键字是否至少匹配 SQL 中的一列

来自分类Dev

如何列出所有的shell关键字?

来自分类Dev

如何列出句子中所有选中的关键字?

来自分类Dev

如何列出所有的shell关键字?

来自分类Dev

Emacs:如何大写所有关键字(SQL中的示例)

来自分类Dev

如何突出显示一段文字中的所有关键字?

来自分类Dev

如何找到所有结果与mysql中匹配的任何关键字

来自分类Dev

如何在Python的字典中要求子关键字的关键字?

Related 相关文章

  1. 1

    如何查找频率表关键字列是否包含列表中的所有值

  2. 2

    如何使用Spark在文本表中查找关键字?

  3. 3

    如何在字符串中查找关键字

  4. 4

    如何在R中的数据框的特定列中查找和替换某些关键字?

  5. 5

    如何在Clojure中创建动态关键字?

  6. 6

    如何在Windows Form C#中获取与该关键字相关的所有网站

  7. 7

    查找关键字之间的所有信息

  8. 8

    在完全匹配的文本中查找所有关键字及其索引c#

  9. 9

    在Linux中查找包含文件的所有目录,该文件包含关键字

  10. 10

    动态生成的IQueryable查找关键字

  11. 11

    如何在Vue中选择所有具有特定关键字的$ ref?

  12. 12

    如果用户键入*作为关键字,则显示表中的所有条目

  13. 13

    在字符串熊猫列中查找多个关键字的更有效方法

  14. 14

    如何在 ssh_config(5) 中查找密码关键字

  15. 15

    如何在 Python 的字典键中查找多个关键字

  16. 16

    如何在类css中使用特定关键字向所有div添加样式

  17. 17

    如何通过Java在IPersistentMap中查找Clojure关键字?

  18. 18

    如何使用VsVim在多个文件中查找关键字

  19. 19

    如何使用VsVim在多个文件中查找关键字

  20. 20

    如何从Java查找IPersistentMap中的Clojure关键字?

  21. 21

    在所有DataFrame列中搜索关键字并进行过滤

  22. 22

    检查所有关键字是否至少匹配 SQL 中的一列

  23. 23

    如何列出所有的shell关键字?

  24. 24

    如何列出句子中所有选中的关键字?

  25. 25

    如何列出所有的shell关键字?

  26. 26

    Emacs:如何大写所有关键字(SQL中的示例)

  27. 27

    如何突出显示一段文字中的所有关键字?

  28. 28

    如何找到所有结果与mysql中匹配的任何关键字

  29. 29

    如何在Python的字典中要求子关键字的关键字?

热门标签

归档