Кейс условия в sql server?Для десятичного типа данных? - PullRequest
1 голос
/ 04 января 2012

На сервере Sql я пытаюсь написать запрос, если значение меньше нуля, я хочу показать «<0» в других случаях то же значение. Для этого я запишу простой запрос: Я знаю, что это дает ошибку преобразования, но вы можете помочь в этом. </p>

declare @ret decimal = 0.25    
select (case when @ret <0 then  '< 0'  else  @ret  end) as colum     

Ответы [ 3 ]

3 голосов
/ 04 января 2012

Попробуйте, обратите внимание на прецизионные модификаторы с точностью до десятичного знака

declare @ret decimal(10,5) =0.25
select case when @ret < 0 THEN '< 0'  ELSE cast(@ret as varchar) end as colum
1 голос
/ 04 января 2012

Поскольку вы не указали точность и масштаб для переменной @ret, масштаб будет по умолчанию 0 (см. MSDN : The default scale is 0), просто укажите масштаб при объявлении переменной:

DECLARE @ret DECIMAL(10,2) = 0.25 

SELECT 
     CASE 
          WHEN @ret < 0 THEN '< 0' 
          ELSE CAST(@ret AS VARCHAR)
    END
0 голосов
/ 04 января 2012

basic Пример использования CASE in TSQL:

declare @iDec decimal(10,5) = 10.5
SELECT   ProductNumber, 
      Category =
      CASE ProductLine
         WHEN @iDec > 1 THEN 'Greater Than 1'
         WHEN @iDec < 1 THEN 'Less Than 1'
         ELSE 'Equal to 1'
      END,
      Name
FROM Production.Product
ORDER BY ProductNumber;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...