ich erlebe, was ich als völlig unerwartetes Verhalten beschreiben, wenn ich einen float
Wert entweder durch LTRIM
oder RTRIM
passieren:LTRIM und RTRIM Abschneiden Gleitkommazahl
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
, die die folgenden Ergebnisse liefert:
MyCol | lr | l | r
--------------------------------------------
11.7333335876465 | 11.7333 | 11.7333 | 11.7333
Ich habe das gleiche Verhalten auf SQL Server 2014 und 2016 beobachtet.
Jetzt, meine Verständnis ist, dass LTRIM
und RTRIM
nur Leerraum von einem Wert abstreifen sollte - nicht umwandeln/abschneiden.
Hat jemand eine Idee, was hier vor sich geht?
Nur um den Hintergrund zu erklären. Ich erzeuge SQL-Abfragen mit den Eigenschaften eines Satzes von C# -POCOs (die Ergebnisse werden verwendet, um einen MD5-Hash zu erzeugen, der dann mit einem äquivalenten Wert aus einer Oracle-Tabelle verglichen wird) und aus praktischen Gründen jede Spalte mit LTRIM/RTRIM umschließt .
Sieht aus wie es in eine Zeichenfolge ist, um die Funktion Anforderungen passen. Nichts Seltsames daran –
Warum versuchen Sie, Weißraum irgendwie von etwas vom "Floss" -Datentyp zu trimmen? Es wird niemals welche geben. Dies kann nur für Zeichenfolgendarstellungen gelten. –
So erhalten Sie unerwartetes Verhalten, wenn Sie eine Zeichenfolgenfunktion mit einem Gleitkommawert verwenden. Dann tu es nicht. –