SQL-эквивалент Math.Floor () в c # - PullRequest
       0

SQL-эквивалент Math.Floor () в c #

2 голосов
/ 23 сентября 2011

Я просто хочу преобразовать 10.111 в 10 на основе некоторого условия в следующем запросе

Select 
    case when 2=1 then
        CONVERT(decimal(10,3), 10.111)
    else
        CONVERT(decimal(10,0), 10.111)
    end

Но он возвращает 10.000 Как я могу получить 10?

1 Ответ

8 голосов
/ 23 сентября 2011

Выражение CASE в целом должно соответствовать одному и тому же типу данных.Единственный способ сделать так, чтобы одна ветвь оценивалась как decimal(10,3), а другая - с другим типом данных, - это выполнить приведение к sql_variant

Select 
    case when 2=1 then
        CONVERT(decimal(10,3), 10.111)
    else
        CAST(FLOOR( 10.111) AS SQL_VARIANT)
    end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...