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

Sql server 一个非常简单的T-SQL语句语法错误,sql-server,syntax-error,Sql Server,Syntax Error,我只是试图通过以下语句查询数据库中是否存在任何表: IF EXISTS(SELECT 1 FROM db_name.sys.tables WHERE name = 'table_name') 我得到一个语法错误 “')附近的语法不正确 怎么了?如何检查我的数据库中是否存在表 如果条件匹配,则in SQL需要执行语句或块(即“then”语句或块),并且可以选择添加“else”语句/块,如下所示: IF EXISTS(SELECT 1 FROM mydbname.sys.tables WHERE

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

IF EXISTS(SELECT 1 FROM db_name.sys.tables WHERE name = 'table_name')
我得到一个语法错误

“')附近的语法不正确

怎么了?如何检查我的数据库中是否存在表

如果条件匹配,则in SQL需要执行语句或块(即“then”语句或块),并且可以选择添加“else”语句/块,如下所示:

IF EXISTS(SELECT 1 FROM mydbname.sys.tables WHERE name = 'MyTable')
    PRINT 'FOUND';
ELSE
    PRINT 'NOT FOUND';
如果需要在“then”或“else”中执行多条语句,请将它们包装在以BEGIN/END分隔的块中

注意:如果您来自FP背景,则
if
语句是旧式分支样式,而不是条件/模式匹配样式,即您不能这样做

DECLARE @isFound BIT;
SET @isFound = IF EXISTS(SELECT 1 FROM mydbname.sys.tables WHERE name ='MyTable')
-- ** syntax error

您应该选择一些输出来检查表是否存在。例如:

IF EXISTS(SELECT 1 FROM sys.tables WHERE name = 'table1') Select 1 ELSE Select 0
如果
table1
存在或不存在,则返回
0
1

其他方式:

SELECT 1 WHERE EXISTS(SELECT 1 FROM sys.tables WHERE name = 'table1')
如果
table1
存在,或者没有记录,Whcih将返回
1

注意:您也可以省略
存在的部分
并使用如下内容:

SELECT 1 FROM sys.tables WHERE name = 'table1'

它将返回
1
,或者根据
table1
的存在不返回任何记录。那是什么意思?如果有表退出或退出,请给出查询表的完整语法not@StuartLC
用于
案例
。T-SQL的if语法是
if[BEGIN…END][ELSE][BEGIN…END]
@masiboo我们需要一些更广泛的上下文。您发布的代码很好。@ZoharPeled我的意思是OP在发生错误时不会做任何事情match@StuartLC是的,你的回答涵盖了这一点:-)