小编Dee*_*rma的帖子

从双引号括起来的记录中删除一个字符

我有一个表,其中每一行都有如下数据:

0150566115,"HEALTH 401K","IC,ON","ICON HEALTH 401K",,,1,08/21/2014
Run Code Online (Sandbox Code Playgroud)

我想要的是删除,包含在双引号“”之间的每个逗号 ( )。然后用逗号 ( ,)分割字符串的其余部分

我不想检查双引号开始和结束的每个字符设置标志。

我可以实现某种正则表达式吗?

有没有简单的方法?

到目前为止,我所尝试的只是根据逗号 ( ,)拆分字符串,但它也在拆分引号内的值。

这是为了达到目的:如何在完整的表中实现这一点(目前,如果我只有一个双引号块实例,它就可以工作)?

Declare @Query nvarchar(max) 

Set @Query = 'Item1,Item2,"Item,Demo,3",New'

Declare @start int, @len int
SELECT @start = PATINDEX('%"%"%', @Query) + 1

print @start

select @len = CHARINDEX('"', SUBSTRING(@Query, @start, LEN(@Query))) - 1

select 
        SUBSTRING(@Query, 1, @start - 2) +
        REPLACE((SUBSTRING(@Query, @start, @len)), ',', '') +
        SUBSTRING(@Query, @start + @len + 1, LEN(@Query))
Run Code Online (Sandbox Code Playgroud)

这是我用来分割的函数

ALTER FUNCTION [dbo].[fnSplit](
    @sInputList VARCHAR(8000) -- List of …
Run Code Online (Sandbox Code Playgroud)

sql-server regular-expression t-sql string-splitting

0
推荐指数
1
解决办法
6468
查看次数