Получил целочисленный результат при печати возвращаемое число - PullRequest
0 голосов
/ 13 февраля 2020

Не совсем понятно, почему я получил @res = 1 при печати return 0.57? Мне нужно вернуть результаты numberri c в моей функции UDF.

DECLARE @text1 VARCHAR(255) = 'some text'
DECLARE @text2 VARCHAR(255) = 'same another text'
DECLARE @res AS NUMERIC
DECLARE @i INT = 0
DECLARE @exist_counter INT = 0

WHILE @i < (LEN(@text1) - 2)
BEGIN
    SET @i = @i + 1

    IF CHARINDEX(SUBSTRING(@text1, @i, 3), @text2) > 0
    BEGIN
        SET @exist_counter = @exist_counter + 1
            --print @exist_counter
            --print SUBSTRING(@text1,@i,3)
    END
END

PRINT @i
PRINT @exist_counter
PRINT cast(@exist_counter AS NUMERIC) / cast(nullif(@i, 0) AS NUMERIC)

SET @res = cast(@exist_counter AS NUMERIC) / cast(nullif(@i, 0) AS NUMERIC)

PRINT @res

1 Ответ

2 голосов
/ 13 февраля 2020

С этой записи

Нумерация c типов данных с фиксированной точностью и масштабом

Таким образом, вы должны изменить шкалу like.

declare @res as numeric(18, 2)

Почему?

Как и в комментарии @ HABO, "Точность по умолчанию 18. " и "The по умолчанию масштаб равен 0"где масштаб" Количество десятичных цифр, которые хранятся справа от десятичной точки."

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...