gpt4 book ai didi

SQL IF 语句使用多个 ISNULL

转载 作者:行者123 更新时间:2023-12-02 09:09:32 27 4
gpt4 key购买 nike

我有下面的代码,它返回邮政编码的访问顺序。我能够正确返回邮政编码,但为了使数据更加用户友好,我在邮政编码之间添加了破折号(-)。

问题来自于这样一个事实:我无法弄清楚如何消除只有 2 或 3 个邮政编码的行的破折号。

enter image description here

SELECT 
[Qry_Zip Stop Sequence].[Load ID],
[1] AS [Stop 1], [2] AS [Stop 2], [3] AS [Stop 3],
[4] AS [Stop 4],
TMS_Load.[Shipped Date/Time],
CONCAT(ISNULL([1], ''), '-', ISNULL([2], ''), '-', ISNULL([3], ''), '-', ISNULL([4], '')) AS [Zip to Zip w Stops]
FROM
(SELECT
[Load ID], [Sequence], [Stop Zip]
FROM
TMS_Load_Stops) ls
PIVOT
(MIN([Stop Zip])
FOR [Sequence] IN ([1], [2], [3], [4])) AS [Qry_Zip Stop Sequence]
INNER JOIN
[TMS_Load] ON [TMS_Load].[Load ID] = [Qry_Zip Stop Sequence].[Load ID];

我希望结果仅显示有效邮政编码之间的破折号。

78052-45050-45201 or
73350-45220 or
84009-48009-14452 or
36521-38222-87745-95123 or
73368 or
12789-35789

最佳答案

在每个值前面加上破折号,并使用 stuff() 删除结果字符串中的第一个破折号(不一定是第一个值中的破折号)。

stuff(concat('-' + [1],
'-' + [2],
'-' + [3],
'-' + [4]),
1,
1,
'')

注意:我在这里故意混合了 +concat() 来进行字符串连接。当值为 NULLconcat() 处理 NULL 时,+ 结果为 NULL就像空字符串一样。这样我们就不需要使用大量的coalesce()或isnull()等。

关于SQL IF 语句使用多个 ISNULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54153603/

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