iho*_*rko 6 sql t-sql sql-server sql-server-2008
我在Table1中有一个列,其中的字符串由commma分隔:
Id Val
1 ,4
2 ,3,1,0
3 NULL
4 ,5,2
Run Code Online (Sandbox Code Playgroud)
例如,是否有一种简单的方法可以拆分并从该列中获取任何值
SELECT值(1)FROM Table1应该得到
Id Val
1 4
2 3
3 NULL
4 5
Run Code Online (Sandbox Code Playgroud)
SELECT Value(2)FROM Table1应该得到
Id Val
1 NULL
2 1
3 NULL
4 2
Run Code Online (Sandbox Code Playgroud)
谢谢!
以下是结合使用 CTE 并将 CSV 转换为 XML 的示例:
DECLARE @Test TABLE (
CsvData VARCHAR(10)
);
INSERT INTO @Test (CsvData)
VALUES
('1,2,3'),
(',4,5,7'),
(NULL),
(',3,');
WITH XmlData AS (
SELECT CONVERT(XML, '<val>' + REPLACE(CsvData, ',', '</val><val>') + '</val>') [CsvXml]
FROM @Test
)
SELECT xd.CsvXml.value('val[2]', 'VARCHAR(10)')
FROM XmlData xd;
Run Code Online (Sandbox Code Playgroud)
这将输出:
2
4
NULL
3
Run Code Online (Sandbox Code Playgroud)
要显示的列由 XPath 查询控制。在这种情况下,val[2]。
这里的主要优点是不需要用户定义的函数。
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |