一个非常简单的T-SQL语句语法错误

时间:2018-01-07 06:54:47

标签: sql-server syntax-error

我只是试图通过以下语句查询我的数据库中是否存在任何表:

IF EXISTS(SELECT 1 FROM db_name.sys.tables WHERE name = 'table_name')

我收到语法错误

  

')'

附近的语法不正确

有什么问题?如何检查数据库中是否存在表。

2 个答案:

答案 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存在与否,则会返回1table1

其他方式:

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或没有记录。