gpt4 book ai didi

sql-server - SQL 服务器 : replace multiple occurrences of a word with one

转载 作者:搜寻专家 更新时间:2023-10-30 20:24:40 25 4
gpt4 key购买 nike

我有一个 SQL Server 表,其中有一列 Event,其中包含如下值:

[Event]
----------------------------------------
Payment stopped, Claim, Claim, Claim
Claim
Claim, Claim, Claim
Claim, Claim, Payment stopped, Case Closed

现在用户想要查看此列,其中包含单词“Claim”的摘要计数,以便下面的列看起来像

[Event]
-------------------------------------
Payment stopped, 3 Claims
Claim
3 Claims
2 Claims, Payment stopped, Case Closed

“ claim ”一词最多可出现 400 次,他们不介意将计数保持在值的开头(3 次 claim ,付款已停止)或值的结尾(付款已停止,3 次 claim )。我有一个 udf 可以计算这个词的数量,但是删除逗号、空格似乎真的很困难。

有没有办法做到这一点(有或没有 udf)?我正在使用 SQL Server 2008。

最佳答案

试试下面的脚本

DECLARE @V_WORD NVARCHAR(10)    =   'Claim'

DECLARE @TABLE TABLE
( [Event] NVARCHAR(MAX))

INSERT INTO @TABLE
VALUES('Payment stopped, Claim, Claim, Claim'),('Claim'),('Claim, Claim, Claim'),('Claim, Claim, Payment stopped, Case Closed')

;WITH CTE
AS (
SELECT [Event]
,CHARINDEX(@V_WORD,[Event],0) [stpos]
,(LEN([Event]) - LEN(REPLACE([Event],@V_WORD,''))) / LEN(@V_WORD) AS [ECount]
FROM @TABLE
)

SELECT REPLACE([Event]
,SUBSTRING([Event],[stpos],([ECount] * LEN(@V_WORD)) + (([ECount]-1) * 2))
,CAST([ECount] AS NVARCHAR) +' Claim' +
(CASE WHEN [ECount] > 1 THEN 's' ELSE '' END)
) [Result]
FROM CTE

结果:

Payment stopped, 3 Claims
1 Claim
3 Claims
2 Claims, Payment stopped, Case Closed

关于sql-server - SQL 服务器 : replace multiple occurrences of a word with one,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41440676/

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