在MySQL中,我可以返回(什么是有效的)布尔值,用它来确定数据库是否按名称存在。

SELECT EXISTS (SELECT 1 FROM information_schema.schemata WHERE schema_name = 'MyDatabase')

在MS-SQL中有什么相同之处?

最佳答案

在SQL Server中,您可以这样做:

IF EXISTS (SELECT 1 FROM ...)
 SELECT 1
ELSE
 SELECT 0

有趣的是,尽管EXISTS函数确实返回了一个可以由IF测试的布尔值,但不能直接选择它。
这在SQL Server中不起作用:
SELECT EXISTS(SELECT 1)

但这确实:
IF EXISTS(SELECT 1)
 SELECT 1
ELSE
 SELECT 0

奇怪的。
编辑:经过进一步的思考,我想MySQL可能会把EXISTS()当作一个返回值的函数,而SQL Server则把它当作一个条件表达式,要么通过要么失败,但不返回值。
所以在SQL Server中,尝试SELECT一个EXISTS()的结果就像尝试SELECT ('a' > 'b')一样。它做不到。我想知道如果你尝试的话MySQL会做什么?

10-01 17:24
查看更多