如何从csv文件中删除最后一个逗号并在SQL Server 2012中添加字符串

时间:2013-08-23 07:16:40

标签: sql sql-server sql-server-2008

我在SQL中有csv文件

@code varchar(10) = 'pc-shr,pqr,qzcx,rtde,rz-fg,kj-hl,jk_lm'

我试过

Convert(Varchar(10), @code) + CASE WHEN len(@code) >10 THEN '..etc' Else  '' END [code]

但我希望这意味着在字符串中找到最后一个逗号,之后添加..etc 它应该看起来像这样

'pc-shr,pqr,.. etc'

3 个答案:

答案 0 :(得分:1)

这是你在找什么?

SET @code= 
    CASE WHEN LEN(@code) > 10 
        THEN SUBSTRING(@code, 0, 10) + ', etc...' 
        ELSE '' 
    END

答案 1 :(得分:1)

查询:

<强> SQLFIDDLEExample

declare @code varchar(10) = 'pc-shr,pqr,qzcx,rtde,rz-fg,kj-hl,jk_lm'
select @code
--pc-shr,pqr

SELECT SUBSTRING(@code, 1, LEN(@code)-CHARINDEX (',' ,REVERSE(@code))) + '..etc'
--pc-shr..etc

替换字符串的右边部分,这是最后一个逗号,如果你想要你的例子中的结果增加大小 - varchar(11)

编辑:你想要这个吗?

SELECT SUBSTRING(@code, 1, LEN(@code)-CHARINDEX (',' ,REVERSE(@code))+1) + '..etc'
--pc-shr,..etc

字符串@code varchar(10)中的最后一个逗号是这个pc-shr * * pqr所以我添加了..etc

SELECT SUBSTRING(@code, 1, LEN(@code)-CHARINDEX (',' ,REVERSE(@code))+1) + '..etc ' 
   +  SUBSTRING(@code, LEN(@code)-CHARINDEX (',' ,REVERSE(@code))+2,LEN(@code)) 
--pc-shr,..etc pqr

答案 2 :(得分:1)

我发现的主要问题是你的变量声明,即 @code varchar(10)。它将其大小固定为10.您可以尝试belwo:

Declare @code varchar(max) = 'pc-shr,pqr,qzcx,rtde,rz-fg,kj-hl,jk_lm';    
IF LEN(@code) > 10 
BEGIN
    SET @code=SUBSTRING(@code, 0, 10) + ', etc...' 
END