gpt4 book ai didi

sql-server - 在特定的字符串组之前填充或插入字符串

转载 作者:行者123 更新时间:2023-12-01 06:20:53 24 4
gpt4 key购买 nike

我在历史表中有一个包含此类数据的表。

MEMBER_ID   COLORS
1 1) Red 2) Blue 3) Green

我需要修改或选择数据,使结果集看起来像这样。

MEMBER_ID   COLORS
1 #1) Red #2) Blue #3) Green

简而言之,在数字和右括号之前插入井号。

我尝试使用 CHARINDEX 但我尝试过的方法不起作用。

最佳答案

您可以使用 Replace (Colors, '1', '#1') 命令将数字 1 转换为 #1。并且必须对每个数字使用替换命令。换句话说,您的查询必须写成如下:

SELECT Member_Id, LTRIM(REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(' '+Colors,' 1',' #1')
,' 2',' #2')
,' 3', ' #3')
,' 4',' #4')
,' 5',' #5')
,' 6',' #6')
,' 7',' #7')
,' 8',' #8')
,' 9',' #9')) AS Colors
From YourTable

另一种方法:

CREATE FUNCTION dbo.f(@T NVARCHAR(100))
RETURNS NVARCHAR(100)
AS BEGIN
DECLARE @R NVARCHAR(100)='',
@IsDigit BIT = 0,
@Index INT = 1
WHILE @Index<=LEN(@T)BEGIN
IF (SUBSTRING(@T,@Index,1) IN ('1','2','3','4','5','6','7','8','9') AND @IsDigit = 0) BEGIN
SET @R = @R + '#'+SUBSTRING(@T,@Index,1)
SET @IsDigit = 1
END ELSE BEGIN
SET @R = @R + SUBSTRING(@T,@Index,1)
SET @IsDigit = 0
END
SET @Index = @Index + 1
END
RETURN @R
END

Select Member_ID, dbo.f(Colors)
From YourTable

关于sql-server - 在特定的字符串组之前填充或插入字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24421236/

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