【问题标题】:parsing nvarchar(max) data field in sql解析sql中的nvarchar(max)数据字段
【发布时间】:2017-08-22 19:40:34
【问题描述】:

我有一个像“marketplace-used-new-ebook-rental_new-rental_used”这样的字段,其中“rental_new”是一件等等。这是刺痛中所有可能的元素,但它们可以按任何顺序排列并包含一个或多个片段。我该如何分解它,以便我可以解释所有不同的组合?我也无法在这个数据库上创建函数。

【问题讨论】:

  • 什么供应商和 sql 版本?
  • SSMS 2014 sql 版本 12.0。

标签: sql-server tsql split


【解决方案1】:

你真的有三个选择

  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 Server 2016 有一个内置函数来分解数据,但在那之前它只是这三个选项之一。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多