解析sql中的nvarchar(max)数据字段

时间:2017-08-22 19:40:34

标签: sql-server tsql split

我有一个像“市场 - 使用过的新电子书 - 租赁_新租赁”这样的字st'其中' rental_new'是一块等等。这是刺痛中的所有可能元素,但它们可以按任何顺序包含一个或多个部分。如何解决这个问题,以便我可以解释所有不同的组合?我也无法在这个数据库上创建函数。

1 个答案:

答案 0 :(得分:3)

你真的有三个选择

  1. 在应用层进行工作

  2. 写一个光标来做

  3. 使用XML执行此操作

  4. 以下示例适用于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具有内置函数来分解数据,但在此之前它是这三个选项之一。