我有一个像“市场 - 使用过的新电子书 - 租赁_新租赁”这样的字st'其中' rental_new'是一块等等。这是刺痛中的所有可能元素,但它们可以按任何顺序包含一个或多个部分。如何解决这个问题,以便我可以解释所有不同的组合?我也无法在这个数据库上创建函数。
答案 0 :(得分:3)
你真的有三个选择
在应用层进行工作
写一个光标来做
使用XML执行此操作
以下示例适用于XML
注意:只有在可以保证输入字符串不包含任何XML字符的情况下才能使用XML。一个字符串<,>或者&并且查询将失败。
SELECT distinct a.split_me
FROM
(
SELECT cast('<X>'+replace('marketplace-used-new-ebook-rental_new-
rental_used','-','</X><X>')+'</X>' as XML) as xml_convert
)xml_data
CROSS APPLY
(
SELECT fdata.D.value('.','nvarchar(50)') as split_me
FROM xml_data.xml_convert.nodes('X') as fdata(D)
) a
SQL Server 2016具有内置函数来分解数据,但在此之前它是这三个选项之一。