0

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」

4

3 に答える 3

1

これはあなたが探しているものですか?

SET @code= 
    CASE WHEN LEN(@code) > 10 
        THEN SUBSTRING(@code, 0, 10) + ', etc...' 
        ELSE '' 
    END
于 2013-08-23T07:37:28.047 に答える
1

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
于 2013-08-23T08:15:31.583 に答える
1

クエリ:

SQLFIDDLE例

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
于 2013-08-23T07:40:43.000 に答える