DECLARE @Chat varchar(100) = 'GiveSilk:[Axmeed] Amount:[10]'
,@TargetCharName varchar(32),@Amount int
SET @TargetCharName = (REPLACE(@Chat,'GiveSilk:[',''))
select @TargetCharName
多数民众赞成我的SQL查询我想在结果中选择'Axmeed',但问题是'Axmeed'字符串不是静态的,它会成为任何文本我如何单独选择它?
答案 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#库的作者,但此处提到的功能在免费版本中可用。)