在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会做什么?
t-sql 中没有布尔值这样的东西。最接近的是一个位,它实际上允许三个值(0、1 和 NULL(。如果要选择 1 或 0,可以通过将 count(*( 转换为位来执行此操作。除 0 以外的任何值都将为 1。
select MyResult = convert(bit, count(*))
FROM information_schema.schemata
where SCHEMA_NAME = 'YourSchemaName'
使用CASE WHEN EXISTS()..
SELECT CASE WHEN EXISTS(SELECT * FROM ...) THEN 1 ELSE 0 END