在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会做什么?