如何遍历数据库中的表,然后根据条件遍历这些表行?

用户2023068

我正在处理 AdventureWorks2008R2 数据库,我想弄清楚是否有办法遍历该数据库中的所有表,然后给定条件遍历该表特定列中的行?

目前我有

SELECT DISTINCT
INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION,TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME
 FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE ('%date%') AND COLUMN_NAME Not LIKE '%JobCandidate%'
;

我想从这里做的是浏览这些表,然后它们的行根据给定的条件更改日期。

在非 SQL 代码和松散的伪代码中,它可能类似于

FOR TABLES 
SELECT A TABLE WITH A COLUMN THAT HAS A DATE IN IT 
FOR COLUMN_WITH_DATE_HEADER
IF ROW HAS DATE GIVEN SOME CONDITION 
UPDATE ROW IN THAT TABLE

任何人都可以提供帮助吗?

提前致谢!

更新

这是我根据@Mars 解决方案创建的代码。

SELECT DISTINCT
IDENTITY(int,1,1) AS SN,
INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION
 , TABLE_SCHEMA
 , TABLE_NAME
 , COLUMN_NAME
INTO #temptable
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE ('%date%') 
AND COLUMN_NAME Not LIKE '%JobCandidate%' AND 
COLUMN_NAME NOT LIKE '%BirthDate%';

  DECLARE @start INT=1
, @end INT=0
, @query NVARCHAR(MAX)='';
DECLARE @conditions NVARCHAR(MAX)='' ;


SELECT @end=MAX(SN)
FROM #temptable
WHILE (@start<=@end)
BEGIN
    SELECT  
    @conditions = ' WHERE ' + 'YEAR('+ COLUMN_NAME +')' + ' < 2009',
    @query= 'UPDATE '+TABLE_SCHEMA+'.' 
            +TABLE_NAME +' SET '+ COLUMN_NAME
            +' = dateadd(YEAR,8,' + COLUMN_NAME + ')'      
    FROM #temptable
    WHERE SN =@start
    EXEC (@query)
    SET @start+=1
END

DROP TABLE #temptable
火星

您需要设置所需的更新日期和条件以检查变量@updatatingDate@conditions

SELECT DISTINCT
IDENTITY(int,1,1) AS SN,
INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION
 , TABLE_SCHEMA
 , TABLE_NAME
 , COLUMN_NAME
INTO #temptable
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME LIKE ('%date%') 
AND COLUMN_NAME Not LIKE '%JobCandidate%';

  DECLARE @start INT=1
, @end INT=0
, @query NVARCHAR(MAX)=''
, @updatatingDate NVARCHAR(100)='2017-04-04'
, @conditions NVARCHAR(MAX)='1=1'

SELECT @end=MAX(SN)
FROM #temptable
WHILE (@start<=@end)
BEGIN
    SELECT 
    @query= 'UPDATE '+TABLE_SCHEMA+'.' 
            +TABLE_NAME +' SET '+ COLUMN_NAME
            +' ='''+@updatatingDate+''' WHERE '
            +@conditions
    FROM #temptable
    WHERE SN =@start
    EXEC (@query)
    SET @start+=1
END
--DROP TABLE #temptable;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何遍历数据库的表?

来自分类Dev

循环遍历数据表中的特定行

来自分类Dev

需要遍历数据库中的所有表并在条件匹配的情况下触发一些查询

来自分类Dev

遍历数据表

来自分类Dev

循环遍历数据库中的每个表并获取一列的前三位数字

来自分类Dev

Rails 遍历数据库表并按名称拒绝一个对象

来自分类Dev

如何遍历数据库中的数据以使其成为模板中的单选按钮?

来自分类Dev

PHP遍历数据库中的JSON对象

来自分类Dev

我们如何基于列循环遍历数据框并根据条件检索行

来自分类Dev

循环遍历数据框中的元素,并根据条件添加一行

来自分类Dev

遍历数据库ResultSet

来自分类Dev

遍历数据库Django

来自分类Dev

遍历数据库结果

来自分类Dev

如何遍历单元格并遍历数组,然后根据匹配隐藏行?

来自分类Dev

如何遍历数据库中的字段并查找空字段

来自分类Dev

如何遍历数据库中已有的对象并更新字段?

来自分类Dev

Firebase For Android Studio - 如何遍历数据库中的每个项目?

来自分类Dev

遍历数据表中的特定列

来自分类Dev

循环遍历数据表中特定列的值

来自分类Dev

遍历数据上下文表

来自分类Dev

如何遍历数组以显示在HTML表中

来自分类Dev

如何从同一数据库的每个表的每个列中检索前5个值,然后遍历整个数据库中的前5个值

来自分类Dev

如何根据用户条件查看数据库表中的数据?

来自分类Dev

如何遍历数据透视表中的每一列并识别表中的前 2-3 个数字?

来自分类Dev

如何遍历数据框并删除行?

来自分类Dev

如何遍历数据库中employeeID列的所有行并一次检索一个小时的工资率?

来自分类Dev

如何遍历数据库中employeeID列的所有行并一次检索一个小时的工资率?

来自分类Dev

遍历数据框中的行

来自分类Dev

通过嵌套循环遍历多个数据库表?

Related 相关文章

  1. 1

    如何遍历数据库的表?

  2. 2

    循环遍历数据表中的特定行

  3. 3

    需要遍历数据库中的所有表并在条件匹配的情况下触发一些查询

  4. 4

    遍历数据表

  5. 5

    循环遍历数据库中的每个表并获取一列的前三位数字

  6. 6

    Rails 遍历数据库表并按名称拒绝一个对象

  7. 7

    如何遍历数据库中的数据以使其成为模板中的单选按钮?

  8. 8

    PHP遍历数据库中的JSON对象

  9. 9

    我们如何基于列循环遍历数据框并根据条件检索行

  10. 10

    循环遍历数据框中的元素,并根据条件添加一行

  11. 11

    遍历数据库ResultSet

  12. 12

    遍历数据库Django

  13. 13

    遍历数据库结果

  14. 14

    如何遍历单元格并遍历数组,然后根据匹配隐藏行?

  15. 15

    如何遍历数据库中的字段并查找空字段

  16. 16

    如何遍历数据库中已有的对象并更新字段?

  17. 17

    Firebase For Android Studio - 如何遍历数据库中的每个项目?

  18. 18

    遍历数据表中的特定列

  19. 19

    循环遍历数据表中特定列的值

  20. 20

    遍历数据上下文表

  21. 21

    如何遍历数组以显示在HTML表中

  22. 22

    如何从同一数据库的每个表的每个列中检索前5个值,然后遍历整个数据库中的前5个值

  23. 23

    如何根据用户条件查看数据库表中的数据?

  24. 24

    如何遍历数据透视表中的每一列并识别表中的前 2-3 个数字?

  25. 25

    如何遍历数据框并删除行?

  26. 26

    如何遍历数据库中employeeID列的所有行并一次检索一个小时的工资率?

  27. 27

    如何遍历数据库中employeeID列的所有行并一次检索一个小时的工资率?

  28. 28

    遍历数据框中的行

  29. 29

    通过嵌套循环遍历多个数据库表?

热门标签

归档