I SQL Server, T-SQL STR()
funktion returnerar teckendata konverterade från numeriska data. Returvärdet har returtypen varchar .
Du tillhandahåller numeriska data som ett argument när du anropar funktionen. Funktionen konverterar den sedan till teckendata. Det finns också två valfria argument som du kan använda för att ange längden och antalet platser till höger om decimalkomma.
Syntax
Syntaxen ser ut så här:
STR ( float_expression [ , length [ , decimal ] ] )
Där float_expression är ett uttryck för ungefärlig numerisk (float ) datatyp med en decimalkomma.
längd är ett valfritt argument som du kan använda för att ange den totala längden. Detta inkluderar decimalkomma, tecken, siffror och mellanslag. Standard är 10.
decimal är antalet platser till höger om decimalkomma. Detta kan vara ett maxvärde på 16. Om det är mer än det, trunkeras det till 16.
Exempel 1 – Grundläggande användning
Här är ett exempel på hur det fungerar:
SELECT STR(123.45) AS Result;
Resultat:
+------------+ | Result | |------------| | 123 | +------------+
Exempel 2 – Avrundning
Som standard avrundas talet till ett heltal. Om vi justerar inmatningen från föregående exempel (t.ex. öka bråkdelen från .45
till .55
) får vi följande:
SELECT STR(123.55) AS Result;
Resultat:
+------------+ | Result | |------------| | 124 | +------------+
Exempel 3 – Längd
När du använder den valfria längden parametern, bör dess värde vara större än eller lika med delen av talet före decimalkomma plus talets tecken (om något).
Till exempel är följande bra, eftersom längd är större än delen av talet före decimalkomma:
SELECT STR(123.55, 4) AS Result;
Resultat:
+----------+ | Result | |----------| | 124 | +----------+
Men följande exempel visar vad som händer när längden värdet är för litet:
SELECT STR(123.55, 2) AS Result;
Resultat:
+----------+ | Result | |----------| | ** | +----------+
Observera också att längd bestämmer längden på utdata och inkluderar decimalkomma, tecken, siffror och mellanslag. Standardlängden är 10.
Här är ett exempel för att visa skillnaden i utdata beroende på värdet på längden argument:
SELECT 123 AS '123', STR(123, 3) AS '3', STR(123, 10) AS '10', STR(123, 16) AS '16';
Resultat:
+-------+-----+------------+------------------+ | 123 | 3 | 10 | 16 | |-------+-----+------------+------------------| | 123 | 123 | 123 | 123 | +-------+-----+------------+------------------+
För ett annat sätt att demonstrera detta, i följande exempel trimmar jag utdata med TRIM()
funktion (och jämför den med den otrimmade versionen):
SELECT TRIM(STR(123, 16)) AS 'A', STR(123, 16) AS 'B';
Resultat:
+-----+------------------+ | A | B | |-----+------------------| | 123 | 123 | +-----+------------------+
Exempel 4 – Decimaler
Här är ett exempel på hur du använder den valfria decimalen parameter:
SELECT STR(123.55, 8, 4) AS Result;
Resultat:
+----------+ | Result | |----------| | 123.5500 | +----------+
Lägg märke till att jag ökade värdet för längd för att få plats med decimalerna.
Om jag minskar längden värde till 6
, jag får det här:
SELECT STR(123.55, 6, 4) AS Result;
Resultat:
+----------+ | Result | |----------| | 123.55 | +----------+