2

次の変数があります。

DECLARE @test nvarchar(100)
SET @test =  'Prodcut A (Average: 1.000)'
SET @test =  'Prodcut B (Average: 2.3500)'

私の出力は次のようになります: 製品 A (平均: 1.0)、製品 B (平均: 2.35)

SQL Server の nvarchar データ型列から末尾のゼロをすべて削除するにはどうすればよいですか? SUBSTRING と CHARINDEX を使用する必要があることは確かですが、その方法がわかりません。誰か助けてくれませんか?

私は次のことを試しました:

IF charindex('.', @test ) > 0 
   select  SUBSTRING(@test, PATINDEX('%[^0 ]%', @test+ ' '), LEN(@test))                    
End
4

5 に答える 5

1

'0' 以外の最後の文字の位置を見つけるために文字列を反復処理できますが、それは混乱です。

時折浮動小数点エラーが発生する可能性があることに注意してください

convert(varchar, convert(float, '123.40')) -- yields '123.4'
convert(varchar, convert(float, @test))
于 2013-09-20T20:30:11.290 に答える
1

構造が常に同じである場合は、次のようなものを使用できます。

Declare @a Table (test varchar(100))
Insert into @a Values ('Prodcut X ')
Insert into @a Values ('Prodcut A (Average: 1.000)')
Insert into @a Values ('Prodcut B (Average: 2.3500)')
Insert into @a Values ('Prodcut C (Average: 2.0510)')


Select  
Case When charindex('.', test ) > 0 then
   LEFT(test, LEN(test) + 1  - 
   Case When 
      PATINDEX('%[1-9]%', Reverse(test) + ' ')
    > PATINDEX('%[.]%', Reverse(test) + ' ')
    then PATINDEX('%[.]%', Reverse(test) + ' ') - 1
    else PATINDEX('%[1-9]%', Reverse(test) + ' ') 
    end 
    ) +')'
else test end
from @a
于 2013-09-20T20:36:19.960 に答える
0

以下のコードを試してください。

DECLARE @test nvarchar(100)
SET @test =  'Prodcut A (Average: ' + CONVERT(VARCHAR,CAST(1.000 as float))+')'

SELECT @test
于 2015-09-11T12:33:48.243 に答える