W SQL Server, T-SQL STR()
funkcja zwraca dane znakowe przekonwertowane z danych liczbowych. Zwracana wartość ma typ zwrotu varchar .
Podczas wywoływania funkcji podajesz dane liczbowe jako argument. Funkcja następnie konwertuje je na dane znakowe. Istnieją również dwa opcjonalne argumenty, których można użyć do określenia długości i liczby miejsc na prawo od przecinka dziesiętnego.
Składnia
Składnia wygląda tak:
STR ( float_expression [ , length [ , decimal ] ] )
Gdzie float_expression jest wyrażeniem przybliżonej liczby (float ) typ danych z kropką dziesiętną.
długość jest opcjonalnym argumentem, którego możesz użyć do określenia całkowitej długości. Obejmuje to kropkę dziesiętną, znak, cyfry i spacje. Wartość domyślna to 10.
dziesiętny to liczba miejsc na prawo od przecinka dziesiętnego. Może to być maksymalna wartość 16. Jeśli jest więcej, zostanie skrócona do 16.
Przykład 1 – Podstawowe użycie
Oto przykład tego, jak to działa:
SELECT STR(123.45) AS Result;
Wynik:
+------------+ | Result | |------------| | 123 | +------------+
Przykład 2 – Zaokrąglanie
Domyślnie liczba jest zaokrąglana do liczby całkowitej. Jeśli dostosujemy dane wejściowe z poprzedniego przykładu (np. zwiększymy część ułamkową z .45
do .55
) otrzymujemy:
SELECT STR(123.55) AS Result;
Wynik:
+------------+ | Result | |------------| | 124 | +------------+
Przykład 3 – Długość
W przypadku korzystania z opcjonalnej długości parametr, jego wartość powinna być większa lub równa części liczby przed przecinkiem plus znak liczby (jeśli występuje).
Na przykład poniższe jest w porządku, ponieważ długość jest większa niż część liczby przed przecinkiem:
SELECT STR(123.55, 4) AS Result;
Wynik:
+----------+ | Result | |----------| | 124 | +----------+
Jednak poniższy przykład pokazuje, co się dzieje, gdy długość wartość jest za mała:
SELECT STR(123.55, 2) AS Result;
Wynik:
+----------+ | Result | |----------| | ** | +----------+
Pamiętaj też, że długość określa długość danych wyjściowych i zawiera kropkę dziesiętną, znak, cyfry i spacje. Domyślna długość to 10.
Oto przykład pokazujący różnicę w wynikach w zależności od wartości długości argument:
SELECT 123 AS '123', STR(123, 3) AS '3', STR(123, 10) AS '10', STR(123, 16) AS '16';
Wynik:
+-------+-----+------------+------------------+ | 123 | 3 | 10 | 16 | |-------+-----+------------+------------------| | 123 | 123 | 123 | 123 | +-------+-----+------------+------------------+
Aby pokazać to w inny sposób, w poniższym przykładzie przycinam dane wyjściowe za pomocą TRIM()
funkcja (i porównaj ją z wersją nieprzycinaną):
SELECT TRIM(STR(123, 16)) AS 'A', STR(123, 16) AS 'B';
Wynik:
+-----+------------------+ | A | B | |-----+------------------| | 123 | 123 | +-----+------------------+
Przykład 4 – Miejsca dziesiętne
Oto przykład użycia opcjonalnego dziesiętnego parametr:
SELECT STR(123.55, 8, 4) AS Result;
Wynik:
+----------+ | Result | |----------| | 123.5500 | +----------+
Zauważ, że zwiększyłem wartość długości aby pomieścić miejsca dziesiętne.
Jeśli zmniejszę długość wartość do 6
, rozumiem:
SELECT STR(123.55, 6, 4) AS Result;
Wynik:
+----------+ | Result | |----------| | 123.55 | +----------+