gpt4 book ai didi

sql-server - SQL Server 和 ORACLE 中的 STUFF 函数

转载 作者:行者123 更新时间:2023-12-04 05:35:45 25 4
gpt4 key购买 nike

我有两个 STUFF本主题的问题。

第一个问题是STUFF SQL Server 中的函数。第二个问题是关于 STUFF Oracle (8i) 中的函数。

问题 1:如何删除 ,从我想填的专栏?

示例,给定表:

ID      Country     Payment     Product
12345 USA Cash Red wine
12345 USA Cash
12345 USA Cash

使用这个脚本,它产生:
select distinct Country, Payment,
stuff(isnull((select ', ' + x.Product from #temp x where x.ID = t.ID
group by x.Product for xml path ('')), ''), 1, 2, '') as Product


ID Country Payment Product
12345 USA Cash , Red wine

如何删除结果以仅显示 Red wine只有(删除逗号(,)?

请注意:这不是我写的 STUFF功能。它是由一个叫 OMG Ponies 的人写的。

问题 2:与问题 1 相同,但语法在 Oracle 中:
select distinct ID, Country, Payment, WM_CONCAT(Product) AS Products
from
(
select distinct ID, Country, Payment, Product
from temp table
)x
group by ID, Country, Payment

我希望我的结果只显示 Red wine仅(删除逗号 (,))。

最佳答案

问题一:
就答案的 SQL Server 部分而言,您的 Product 字段中似乎有空字符串-如果没有,它们就不是空字符串。所以你可以使用以下内容。我添加了行 and (product != '' and product is not null)给您的 Stuff()部分,它将删除多余的逗号:

select distinct Country, Payment,
stuff(isnull((select ', ' + x.Product
from test x
where x.ID = t.ID
and (product != '' and product is not null)
group by x.Product for xml path ('')), ''), 1, 2, '') as Product
from test t

SQL Fiddle with Demo

问题2:我无权访问 Oracle 8i 版本,但我猜想如果用空字符串排除值,逗号将消失。

关于sql-server - SQL Server 和 ORACLE 中的 STUFF 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11970632/

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