2017-08-22 72 views
2

我有一個類似'marketplace-used-new-ebook-rental_new-rental_used'的字段,其中'rental_new'是一個整體,等等。這是刺痛中所有可能的因素,但它們可以以任何順序幷包含一個或多個碎片。我該如何解決這個問題,以便我可以解釋所有不同的組合?我也不能在這個數據庫上創建函數。解析sql中的nvarchar(max)數據字段

+0

什麼廠商和版本的SQL? – ttallierchio

+0

SSMS 2014 sql版本12.0。 –

回答

3

你有三個選擇真正

  1. 做應用層

  2. 工作寫光標做

  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服務器2016有一個內置的功能,打破了數據,但在那之前它是這三個選項之一。

相關問題