gpt4 book ai didi

SQL 在连接上使用 If Not Null

转载 作者:行者123 更新时间:2023-12-03 22:56:36 26 4
gpt4 key购买 nike

如果我有 table

enter image description here

SELECT (Firstname || '-' || Middlename || '-' || Surname)  AS example_column
FROM example_table

这将显示名字-中间名-姓氏,例如
John--Smith
Jane-Anne-Smith

第二个(Jane 的)显示正确,但是由于 John 没有中间名,我希望它忽略第二个破折号。

我怎么能放一种 IF Middlename = NULL 语句,以便它只显示 John-Smith

最佳答案

以下是我的建议:

PostgreSQL 和其他 SQL 数据库在哪里 'a' || NULL IS NULL ,然后使用 COALESCE :

SELECT firstname || COALESCE('-' || middlename, '') || '-' || surname ...

Oracle 和其他 SQL 数据库在哪里 'a' || NULL = 'a' :
SELECT first name || DECODE(middlename, NULL, '', '-' || middlename) || '-' || surname...

我喜欢简洁。中间名是否为空对于任何维护程序员来说都不是很有趣。 CASE 开关非常好,但它们笨重。我想尽可能避免重复相同的列名(“中间名”)。

正如@Prdp 所指出的,答案是特定于 RDBMS 的。具体是服务器是否将长度为零的字符串视为等同于 NULL , 决定是否连接 NULL产生 NULL或不。

一般 COALESCE对于 PostgreSQL 风格的空字符串处理来说是最简洁的,而 DECODE (*VALUE*, NULL, ''...用于 Oracle 风格的空字符串处理。

关于SQL 在连接上使用 If Not Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37330260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com