我在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'
答案 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