sql存在vs mysql存在

evrscar2  于 2021-06-20  发布在  Mysql
关注(0)|答案(3)|浏览(301)

在mysql中,我可以返回(实际上是)一个布尔值,用它来确定数据库是否存在。

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

ms sql中的相同之处是什么?

puruo6ea

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

bkkx9g8r

bkkx9g8r2#

在t-sql中没有布尔值。最接近的位实际上允许三个值(0、1和null)。如果要选择1或0,可以将count(*)转换为位。0以外的任何值都将是1。

select MyResult = convert(bit, count(*))
FROM information_schema.schemata
where SCHEMA_NAME = 'YourSchemaName'
hivapdat

hivapdat3#

使用 CASE WHEN EXISTS().. ```
SELECT CASE WHEN EXISTS(SELECT * FROM ...) THEN 1 ELSE 0 END

相关问题