【发布时间】:2016-01-18 07:37:36
【问题描述】:
我有 ABC_DEF_123,DEF_GHI_345,GHI_JKL_678 这样的数据 我需要在“,”和“”之间选择 123,345,678(即) 如何在“,”和最后一个“”之间进行选择 数据不是静态的。 帮帮我... 提前致谢
【问题讨论】:
标签: sql sql-server-2008 stored-procedures
我有 ABC_DEF_123,DEF_GHI_345,GHI_JKL_678 这样的数据 我需要在“,”和“”之间选择 123,345,678(即) 如何在“,”和最后一个“”之间进行选择 数据不是静态的。 帮帮我... 提前致谢
【问题讨论】:
标签: sql sql-server-2008 stored-procedures
尝试下面的代码,尝试将下面的代码包装在函数中
DECLARE @string NVARCHAR(MAX)='ABC_DEF_123,DEF_GHI_345,GHI_JKL_678'
DECLARE @delimiter CHAR(1)=','
DECLARE @output TABLE(splitdata NVARCHAR(MAX) )
BEGIN
DECLARE @start INT, @end INT
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
WHILE @start < LEN(@string) + 1 BEGIN
IF @end = 0
SET @end = LEN(@string) + 1
INSERT INTO @output (splitdata)
VALUES(SUBSTRING(@string, @start, @end - @start))
SET @start = @end + 1
SET @end = CHARINDEX(@delimiter, @string, @start)
END
--
DECLARE @values NVARCHAR(max)=''
SELECT @values=RIGHT(splitdata,3)+','+@values FROM @output ORDER BY splitdata DESC
SELECT (SUBSTRING(@values,0,LEN(@values)))
END
【讨论】:
REVERSE 函数代替。我已经更新了 Ans。
试试下面可能对你有帮助的脚本
选择右('ABC_DEF_123',3)作为数据值
选择子串('ABC_DEF_123',patindex('%[0-9]%','ABC_DEF_123'),len('ABC_DEF_123'))
【讨论】: