我只是试图通过以下语句查询我的数据库中是否存在任何表:
IF EXISTS(SELECT 1 FROM db_name.sys.tables WHERE name = 'table_name')
我收到语法错误
')'
附近的语法不正确
有什么问题?如何检查数据库中是否存在表。
答案 0 :(得分:1)
SQL中的IF condition需要在条件匹配时执行的语句或块(即"然后"语句或块),以及可选的" else"可以添加语句/块,如下所示:
IF EXISTS(SELECT 1 FROM mydbname.sys.tables WHERE name = 'MyTable')
PRINT 'FOUND';
ELSE
PRINT 'NOT FOUND';
如果您需要在'中执行多个语句,那么'或者'否则',然后将它们包装在以BEGIN / END分隔的块中。
请注意,如果您来自FP背景,IF
语句是旧学校副作用分支样式,而不是条件/模式匹配样式,即您不能这样做
DECLARE @isFound BIT;
SET @isFound = IF EXISTS(SELECT 1 FROM mydbname.sys.tables WHERE name ='MyTable')
-- ** syntax error
答案 1 :(得分:0)
您应该选择一些输出来检查表是否存在。例如:
IF EXISTS(SELECT 1 FROM sys.tables WHERE name = 'table1') Select 1 ELSE Select 0
如果0
存在与否,则会返回1
或table1
。
其他方式:
SELECT 1 WHERE EXISTS(SELECT 1 FROM sys.tables WHERE name = 'table1')
如果1
存在,Whcih将返回table1
,否则不会返回记录。
注意:您也可以省略EXISTS
并使用以下内容:
SELECT 1 FROM sys.tables WHERE name = 'table1'
将根据1
的存在而返回table1
或没有记录。