【问题标题】:How to convert nvarchar with comman and double Apostrophe(")如何使用逗号和双撇号(“)转换 nvarchar
【发布时间】:2017-07-12 16:39:44
【问题描述】:

我有一个带有列注释的表作为 nvarchar,当我尝试将 nvarchar 转换为 int 时,我收到类似的错误 将 varchar 值 '"2, 9, 10, 25"' 转换为数据类型 int 时转换失败 大家能帮帮我吗

【问题讨论】:

  • 您期望'"2, 9, 10, 25"' 的整数值是多少?
  • 我有像 "2,9,10,25" 这样的单行,但我想要 2 ,9,10,25 作为整数。我正在尝试将此 varchar 转换为 int 并在此之后使用循环
  • 评论是列名,我的第一行值为“2,9,10,25”
  • 2 ,9,10,25 不是 a 整数。它是四个整数。您是否希望将该字符串转换为一个表格,有四行,2、9 等各有一个?
  • @Shannon 没错

标签: sql-server


【解决方案1】:

如果您使用的是 SQL Server 2016,则可以使用 String_Split,否则您需要进行一些 xml 处理以进行拆分,如下所示:

;With cte as (
    Select xm = CAST('<x>' + REPLACE((SELECT REPLACE(REPLACE(col1,'"',''),', ','$$$SSText$$$') AS [*] FOR XML PATH('')),'$$$SSText$$$','</x><x>')+ '</x>' AS XML) 
        from #test  
) Select [Value] from cte c
cross apply ( Select y.value(N'text()[1]', N'int') as value 
FROM c.xm.nodes(N'x') as x(y) ) a

您的输入表

create table #test (col1 nvarchar(20))
insert into #test (col1) values ('"2, 9, 10, 25"' )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2015-05-15
    相关资源
    最近更新 更多