Tsql #在sql server 2008中动态拆分字符串
我有这样一个字符串:Tsql #在sql server 2008中动态拆分字符串,tsql,sql-server-2008r2-express,Tsql,Sql Server 2008r2 Express,我有这样一个字符串: ","","","41","20120627063343-0210600-41" 我这样写查询是为了拆分上面的字符串 declare @s varchar(max) set @s = '","","","41","20120627063343-0210600-41"' select right(replace(@s,',',''),26) as output 我得到以下输出 output ------- 20120627063343-0210600-41" 对于上面的
","","","41","20120627063343-0210600-41"
我这样写查询是为了拆分上面的字符串
declare @s varchar(max)
set @s = '","","","41","20120627063343-0210600-41"'
select right(replace(@s,',',''),26) as output
我得到以下输出
output
-------
20120627063343-0210600-41"
对于上面的字符串,我想要这样的输出
YEAR TIME NO ID
---- ----- ---- ----
2012-06-27 06:33:43 0210600 41
救救我
感谢和问候,
Anand使用函数,并假设20120627063343-0210600-41
的字符串示例始终为相同的固定长度,则可以提取所需的所有部分。试试这个:
declare @s varchar(max)
declare @t varchar(max)
set @s = '","","","41","20120627063343-0210600-41"'
set @t = right(@s, 26)
select left(@t, 4) + '-' + substring(@t, 5, 2) + '-' + substring(@t, 7, 2) AS [YEAR],
substring(@t, 9, 2) + ':' + substring(@t, 11, 2) + ':' + substring(@t, 13, 2) AS [HOUR],
substring(@t, 16, 7) AS [NO],
substring(@t, 24, 2) AS [ID]
一种可能的解决办法:
declare @s varchar(max), @test varchar(26)
set @s = '","","","41","20120627063343-0210600-41"'
select @test = left(right(replace(@s,',',''),26),25)
select SUBSTRING(@test, 1, 4) + '-' + SUBSTRING(@test, 5, 2) + '-' + SUBSTRING(@test, 7, 2) as 'YEAR',
SUBSTRING(@test, 9, 2) + ':' + SUBSTRING(@test, 11, 2) + ':' + SUBSTRING(@test, 13, 2) as 'TIME',
SUBSTRING(@test, 16, 7) as 'NO',
SUBSTRING(@test, 24, 2) as 'ID'
我怀疑这会像其他人建议的子字符串方法一样快,但它可能更可读,不管它是另一种选择
DECLARE @parsedString VARCHAR(255)
DECLARE @inputString VARCHAR(255)
SET @inputString = '","","","41","20120627063343-0210600-41"'
SET @parsedString = REPLACE(REPLACE(REPLACE(REPLACE(@inputString, '-', '.'), '",', '.'), '"', ''), '...', '')
SELECT PARSENAME(@parsedString, 1) as [Id],
PARSENAME(@parsedString, 2) as [No],
CAST(LEFT(PARSENAME(@parsedString, 3), 8) AS DATE) as [Year],
STUFF(STUFF(RIGHT(PARSENAME(@parsedString, 3), 6), 3, 0, ':'), 6, 0, ':') as [Time]
欢迎使用StackOverflow:如果您发布代码、XML或数据示例,请在文本编辑器中突出显示这些行,并单击编辑器工具栏上的“代码示例”按钮(
{}
),以精确地格式化和语法突出显示它@user1444281-你解决过这个问题吗?