2012-01-03 8 views

答えて

6

動作しません。ここで

は一例です:お使いの場合には

declare @test varchar(5) 
select @test = '12,' 

select substring(@test, 1, len(@test)-1) 

それは次のようになります。

UPDATE [Database].[schema].[Table] 
SET substring([Columnx], 1, len([Columnx])-1) 
WHERE [Columnx] like '%,' 
AND len([Columnx]) > 0 
+3

そして、これは(OPが望んでいるとして)だけではなく、カンマ取り除く何かを得るだろう – zerkms

+0

最後のcharがカンマの場合にのみ@zerkmsが削除されます。 –

+0

カンマを取り除くだけでいいです。これを実行するとエラーになります。 sg 537、Level 16、State 5、Line 1 LEFTまたはSUBSTRING関数に長さパラメータが渡されました。 ステートメントが終了しました。 –

1
UPDATE 
    [Database].[schema].[Table] 
SET 
    Columnx = REVERSE(SUBSTRING(REVERSE(RTRIM(Columnx)), 2, 8000)) 
WHERE 
    [Columnx] like '%,' 
+0

' reverse'を使う方が速いですか? –

+0

@gbn列の型がvarcharの場合、TRIMを使用する必要がありますか? –

+0

@aF:末尾のワイルドカードLIKEを使用して、末尾のカンマ=データの全スキャン(例:すべての行を調べる)は問題ありません。カンマを削除する実際の方法は**完全に無関係です**:違いは測定できません。 – gbn

関連する問題