-1
は、私はどちらかLTRIM
またはRTRIM
を通じてfloat
値を渡すとき、私はと全く予期しない動作を説明するだろうか経験しています:LTRIMとRTRIM切捨て浮動小数点数
MyCol | lr | l | r
--------------------------------------------
11.7333335876465 | 11.7333 | 11.7333 | 11.7333
次の結果が得られます
CREATE TABLE MyTable
(MyCol float null)
INSERT MyTable
values (11.7333335876465)
SELECT MyCol,
RTRIM(LTRIM(MyCol)) lr,
LTRIM(MyCol) l,
RTRIM(MyCol) r
FROM MyTable
SQL Server 2014および2016で同じ動作が確認されています。
LTRIM
とRTRIM
は、値から空白を取り除くだけです。キャストしないでください/切り捨ててください。
誰でもここで何が起こっているのか考えていますか?
この背景を説明するだけです。私はC#POCOのセットのプロパティを使用してSQLクエリを生成しています(結果はMD5ハッシュを生成するために使用され、Oracleテーブルの同等の値と比較されます)。便宜上LTRIM/RTRIM 。機能要件に合うように、文字列にキャストされるよう
が見えます。それについて何も変わっていません –
なぜ、浮動小数点データ型の何かを空白に整えようとしていますか?何もないでしょう。これは文字列表現にのみ適用できます。 –
浮動小数点値を持つ文字列関数を使用すると予期しない動作が発生します。そうしないでください。 –