gpt4 book ai didi

sql - 如何在单个 select 语句中替换多个字符串?

转载 作者:行者123 更新时间:2023-12-05 01:21:26 24 4
gpt4 key购买 nike

我正在尝试替换表格中的字符串,但无法获得我需要的内容。下面是我尝试过的用于替换字符串的示例代码。

问题:我需要用完全匹配的值替换字符串“CV7 + CV8”。

例如:如果我有像 CV7 1998、CV8 1998 这样的值,需要将其替换为 CV7 1998 + CV8 1998,不要重复。所以我想要的输出应该是

CV7 1998 + CV8 1998
CV7 1999 + CV8 1999
.
.

如何在单个 selece 语句中实现此目的?

 Begin
Declare @variable as varchar(50)
set @variable = 'CV7 + CV8'

CREATE TABLE #CVtableforallyears
(
Outcomedestination Varchar(160),
TimeDimensionDatefromCV date
)
Insert into #CVtableforallyears values
('CV7 1998','1998-01-01'),
('CV7 1999','1999-01-01'),
('CV7 2000','2000-01-01'),
('CV7 2001','2001-01-01'),
('CV7 2002','2002-01-01'),
('CV8 1998','1998-01-01'),
('CV8 1999','1999-01-01'),
('CV8 2000','2000-01-01'),
('CV8 2001','2001-01-01'),
('CV8 2002','2002-01-01')

Select Replace(REPLACE(@variable,'CV7',LTRIM (RTRIM (Outcomedestination))),'CV8',Outcomedestination) from #CVtableforallyears
Drop table #CVtableforallyears
END

最佳答案

你应该这样做:

SELECT DISTINCT
substring(
(SELECT
DISTINCT ' + ' + t2.Outcomedestination
FROM #CVtableforallyears t2
WHERE t2.TimeDimensionDatefromCV = t1.TimeDimensionDatefromCV
FOR XML Path ('')
)
,4,1000) --just to omit the first ' + '
FROM #CVtableforallyears t1;
END

它适用于个人简历和超过 2 个。

编辑以减少不必要的。下面的示例演示了使用 FOR XML PATH然后如何在您的完整查询中使用它。

基本上我们将整个查询连接成一个字符串,但使用 ''自然 split 的地方<row>会发生;我们将每个结果与 ' + ' 连接起来.然后让子查询只选择与父查询匹配的项。使用 DISTINCT以避免重复。不幸的是没有 LISTAGG在 TSQL 中,所以我们使用这种方法。

Here is an example

关于sql - 如何在单个 select 语句中替换多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37624075/

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