В SQL Server, T-SQL STR()
функцията връща символни данни, преобразувани от числови данни. Връщаната стойност има тип на връщане varchar .
Вие предоставяте числовите данни като аргумент при извикване на функцията. След това функцията го преобразува в символни данни. Има и два незадължителни аргумента, които можете да използвате, за да посочите дължината и броя на местата вдясно от десетичната запетая.
Синтаксис
Синтаксисът е така:
STR ( float_expression [ , дължина [ , десетична ] ] )
Където float_expression е израз на приблизителен числов (float ) тип данни с десетична запетая.
дължина е незадължителен аргумент, който можете да използвате, за да посочите общата дължина. Това включва десетична запетая, знак, цифри и интервали. По подразбиране е 10.
десетична е броят на местата вдясно от десетичната запетая. Това може да бъде максимална стойност от 16. Ако е повече от това, тя се съкращава до 16.
Пример 1 – Основна употреба
Ето пример за това как работи:
ИЗБЕРЕТЕ STR(123.45) КАТО резултат;
Резултат:
+-----------+| Резултат ||-----------|| 123 |+-----------+
Пример 2 – Закръгляване
По подразбиране числото се закръглява до цяло число. Ако коригираме входа от предишния пример (например, увеличим дробната част от .45
до .55
) получаваме следното:
ИЗБЕРЕТЕ STR(123.55) КАТО резултат;
Резултат:
+-----------+| Резултат ||-----------|| 124 |+-----------+
Пример 3 – Дължина
Когато използвате незадължителната дължина параметър, стойността му трябва да бъде по-голяма или равна на частта от числото преди десетичната запетая плюс знака на числото (ако има такъв).
Например следното е добре, защото дължина е по-голямо от частта от числото преди десетичната запетая:
ИЗБЕРЕТЕ STR(123.55, 4) КАТО резултат;
Резултат:
+---------+| Резултат ||----------|| 124 |+---------+
Следващият пример обаче демонстрира какво се случва, когато length стойността е твърде малка:
ИЗБЕРЕТЕ STR(123.55, 2) КАТО резултат;
Резултат:
+---------+| Резултат ||----------|| ** |+---------+
Също така имайте предвид, че дължина определя дължината на изхода и включва десетичната запетая, знака, цифрите и интервалите. Дължината по подразбиране е 10.
Ето пример за демонстриране на разликата в изхода в зависимост от стойността на дължината аргумент:
ИЗБЕРЕТЕ 123 КАТО '123', STR(123, 3) КАТО '3', STR(123, 10) КАТО '10', STR(123, 16) КАТО '16';
Резултат:
+-------+-----+------------+------------------+ | 123 | 3 | 10 | 16 ||-------+-----+-----------+------------------|| 123 | 123 | 123 | 123 |+-------+-----+------------+-----------------+предварително>За друг начин да демонстрирам това, в следващия пример подрязвам изхода с помощта на
TRIM()
функция (и я сравнете с неподрязаната версия):ИЗБЕРЕТЕ TRIM(STR(123, 16)) КАТО 'A', STR(123, 16) КАТО 'B';Резултат:
+-----+------------------+| A | Б ||-----+------------------|| 123 | 123 |+-----+-----------------+Пример 4 – десетични знаци
Ето пример за използване на незадължителния десетичен знак параметър:
ИЗБЕРЕТЕ STR(123.55, 8, 4) КАТО резултат;Резултат:
+---------+| Резултат ||----------|| 123,5500 |+----------+Забележете, че увеличих стойността за дължина за да побере десетичните знаци.
Ако намаля дължината стойност до
6
, разбрах това:ИЗБЕРЕТЕ STR(123.55, 6, 4) КАТО резултат;Резултат:
+---------+| Резултат ||----------|| 123,55 |+----------+