我在 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'
我在 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'
询问:
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
The main problem i found that is your variable declaration i.e. @code varchar(10). It fixes its size to 10. You can try 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
这是你想要的?
SET @code=
CASE WHEN LEN(@code) > 10
THEN SUBSTRING(@code, 0, 10) + ', etc...'
ELSE ''
END