SQL查询字符串替换

时间:2014-07-04 21:05:45

标签: sql sql-server string tsql

DECLARE @Chat varchar(100) = 'GiveSilk:[Axmeed] Amount:[10]'
,@TargetCharName varchar(32),@Amount int

SET @TargetCharName = (REPLACE(@Chat,'GiveSilk:[',''))

select  @TargetCharName

多数民众赞成我的SQL查询我想在结果中选择'Axmeed',但问题是'Axmeed'字符串不是静态的,它会成为任何文本我如何单独选择它?

3 个答案:

答案 0 :(得分:0)

DECLARE @item varchar (20)
EXEC xp_sscanf 'GiveSilk:[Axmeed] Amount:[10]', 'GiveSilk:[%s]', @item OUTPUT
SELECT SUBSTRING(@item,0,len(@item))

substring是因为"]"将被视为标识符的一部分。

答案 1 :(得分:0)

DECLARE @Chat varchar(100) = 'GiveSilk:[Axmeed] Amount:[10]'

SELECT SUBSTRING(@Chat,CHARINDEX('[',@Chat)+1,CHARINDEX(']',@Chat)-CHARINDEX('[',@Chat)-1)

答案 2 :(得分:0)

一种选择是使用正则表达式。 CaptureGroup是您正在寻找的。例如:

SELECT SQL#.RegEx_CaptureGroup(
                                N'GiveSilk:[Axmeed] Amount:[10]', -- input string
                                N'GiveSilk:\[(\w+)\]', -- Regular Expression
                                1, -- Capture Group Number
                                NULL, -- Not Found Replacement
                                1, -- StartAt
                                -1, -- Length
                                N'IgnoreCase' -- RegEx Options List
                              );

该示例使用SQL#库,但如果您愿意,可以随时编写自己的SQLCLR函数。 (注意:我是SQL#库的作者,但此处提到的功能在免费版本中可用。)