1

我正在尝试创建一个 SQL 语句,它将返回表模式名称以及数据是否是在一天前创建的。

这将使用表模式名称创建 SQL 语句:

DECLARE @SqlStatement VARCHAR(MAX)
SELECT @SqlStatement = 
    COALESCE(@SqlStatement, '') + 'DROP TABLE [TMP].' + QUOTENAME(TABLE_NAME) + ';' + CHAR(13)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'TMP'

PRINT @SqlStatement

如果表是一天前在同一条语句中创建的,如何添加 where 子句?

4

1 回答 1

2

create_date字段存储在sys.tables. 然后,您可以重新加入sys.schemas以获取架构名称。

像这样的东西:

declare @SqlStatement varchar(max)
select @SqlStatement = COALESCE(@SqlStatement, '') + 'DROP TABLE [TMP].' + QUOTENAME(t.name) + ';' + CHAR(13)
from sys.tables t 
    join sys.schemas s on t.schema_id = s.schema_id 
where s.name = 'TMP'
    and t.create_date > dateadd(day,-1,getdate())
print @SqlStatement
于 2014-12-09T01:34:27.170 回答