SQL Server STR Function
By: Daniel Calbimonte
The STR function converts numeric values into character strings.
STR(expression, lengthNumber [,NumberOfDecimals])
- expression - this is the float number to be converted into string characters.
- lengthNumber - it is the number of characters to be displayed including the decimal point.
- NumberOfDecimals - it is the number of decimal numbers at the right of the decimal point.
Simple STR Example
The following example will convert the number 1234 into a string.
SELECT STR(1234,4) as number
Example to Show How STR Rounds Values
The following example is rounding 0.49 down to 0. This is because we only specified the value to the left of the decimal.
SELECT STR(0.49,4) as number
The next example is rounding 0.5 to 1.
SELECT STR(0.5,4) as number
The values are similar with negative values.
SELECT STR(-0.49,4) as number
If we round -0.5, it will return -1.
SELECT STR(-0.5,4) as number
Truncated Numbers When Using STR Function
If the lengthNumber is less than the expression length, it will return asterisks as shown below.
SELECT STR(433422333,4) as number
STR Examples with Decimals
The following example shows how the STR function works with the value of 0.978, a lengthNumber of 2 and the NumberOfDecimals of 2. Since we only specified 2 values for the length it gets rounded to 1.
SELECT STR(0.978,2,2) as number
If we increase the lengthNumber to 3, the value returned is still 1.
SELECT STR(0.978,3,2) as number
Finally, if lengthNumber is 4, we round the value to 0.98 and return the 4 characters of the number.
SELECT STR(0.978,4,2) as number
Using STR Function with Concatenation
In the example below, we can see how we can use the STR function to change a number to a string and therefore concatenate the values.
SELECT 123 + ' Test' as output
SELECT STR(123,3) + ' Test' as output
Here is another example where we use LEN to figure out how many characters to display for the STR function.
SELECT BusinessEntityID, FirstName, STR(BusinessEntityID, LEN(BusinessEntityID)) + '-' + [FirstName] as output FROM [Person].[Person]