它被问过很多次,但不是这样。
我在 SQL Server 2008 上,没有 STRING_SPLIT
函数(与 2016 年一样)。
查询返回以下行,请参见下面的单个示例行。您在下面看到的 bald 实际上是一个字段,所以一个 varchar
列包含它:
Appple|10|admin|845687|Apr|26|11:32:29|2016|AwesomeApplication.zip
我想用竖线 |
字符拆分。
我无法为此编写 CTE 或自定义函数。
我必须使用内置的字符串函数(如 CHARINDEX
、PATINDEX
)在一个选择语句中将单个竖线分隔的元素提取到不同的列中。
有人知道吗?
最佳答案
DECLARE @Result Table(Value varchar(50))
DECLARE @x XML
SELECT @X = CAST('<A>' + REPLACE(@StringList, '|', '</A><A>') + '</A>' AS XML)
INSERT INTO @Result
SELECT t.value('.', 'varchar(50)') as inVal
FROM @X.nodes('/A') AS x(t)
这将创建一个包含一列(值)的表。以竖线分隔的字符串中的每个拆分值都将在此表中创建一个新记录。然后你可以随心所欲地加入它。如果不清楚或者它不适用于 SQL 2008,请告诉我。
如果需要,您可以增加 varchar 的大小 - 您可以修改查询以拆分不同的值(逗号分隔等)。
关于sql - 在 SQL Server 2008 中模拟没有自定义函数的 STRING_SPLIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37078170/