我有一个表,列中有多个值存储在一列中我希望将该数据查询到文件并将值分开。
示例:此列(SHIFT_LENGTHS)的值存储为每周的每一天与#34;#"的对应关系。作为表示星期几的秒数的分隔符。
SELECT
NAME
,SHIFT_LENGTHS
FROM SHIFTGUARANTEE
ORDER BY NAME
SQL结果
NAME ,SHIFT_LENGTHS
Shift1,#14400#14400#14400#14400#14400#14400#14400#
我想查询数据并以这种方式将其显示在文件中:
NAME ,Mon ,Tue ,Wed ,Thu ,Fri ,Sat ,Sun
Shift1,14400,14400,14400,14400,14400,14400,14400
答案 0 :(得分:1)
如果字符串的格式是固定的,你可以使用子字符串函数解析它:
SELECT
NAME
,SUBSTRING(SHIFT_LENGTHS, 2, 5) mon
,SUBSTRING(SHIFT_LENGTHS, 8, 5) tue
,SUBSTRING(SHIFT_LENGTHS, 14, 5) wed
,SUBSTRING(SHIFT_LENGTHS, 20, 5) thu
,SUBSTRING(SHIFT_LENGTHS, 26, 5) fri
,SUBSTRING(SHIFT_LENGTHS, 32, 5) sat
,SUBSTRING(SHIFT_LENGTHS, 38, 5) sun
FROM SHIFTGUARANTEE
ORDER BY NAME
如果格式没有修复,您可以使用charindex函数来获取分隔符的索引,或自定义CLR正则表达式函数。
在另一个问题的答案中使用交叉应用也是一个很好的解决方案:How to split a comma-separated value to columns