在mysql中,我可以返回(实际上是)一个布尔值,用它来确定数据库是否存在。
SELECT EXISTS (SELECT 1 FROM information_schema.schemata WHERE schema_name = 'MyDatabase')
ms sql中的相同之处是什么?
puruo6ea1#
在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() 就像一个返回值的函数,而SQLServer将其视为一个条件表达式,要么通过,要么失败,但不返回值。所以在sql server中 SELECT 结果 EXISTS() 就像试图 SELECT ('a' > 'b') . 它做不到。我想知道如果你尝试mysql做什么?
EXISTS()
SELECT
SELECT ('a' > 'b')
bkkx9g8r2#
在t-sql中没有布尔值。最接近的位实际上允许三个值(0、1和null)。如果要选择1或0,可以将count(*)转换为位。0以外的任何值都将是1。
select MyResult = convert(bit, count(*)) FROM information_schema.schemata where SCHEMA_NAME = 'YourSchemaName'
hivapdat3#
使用 CASE WHEN EXISTS().. ```SELECT CASE WHEN EXISTS(SELECT * FROM ...) THEN 1 ELSE 0 END
CASE WHEN EXISTS()..
3条答案
按热度按时间puruo6ea1#
在sql server中,您可以这样做:
有趣的是,尽管exists函数确实返回了一个可以由if测试的布尔值,但不能直接选择它。
这在sql server中不起作用:
但事实上:
奇怪的。
编辑:进一步思考,我想mysql可能会
EXISTS()
就像一个返回值的函数,而SQLServer将其视为一个条件表达式,要么通过,要么失败,但不返回值。所以在sql server中
SELECT
结果EXISTS()
就像试图SELECT ('a' > 'b')
. 它做不到。我想知道如果你尝试mysql做什么?bkkx9g8r2#
在t-sql中没有布尔值。最接近的位实际上允许三个值(0、1和null)。如果要选择1或0,可以将count(*)转换为位。0以外的任何值都将是1。
hivapdat3#
使用
CASE WHEN EXISTS()..
```SELECT CASE WHEN EXISTS(SELECT * FROM ...) THEN 1 ELSE 0 END