Как проверить условие в постановке SQL-запроса на числа - PullRequest
0 голосов
/ 06 июня 2019

Я хотел бы заменить все значения, которые больше или равны 10, пустой строкой с оператором SQL CASE на моем Microsoft SQL Server 2017. Однако я получаю сообщение об ошибке:

Сообщение 102, Уровень 15, Состояние 1, Строка 13
Неверный синтаксис рядом с '>'.

Хотя есть некоторые вопросы, похожие на мой вопрос, я не могу найти ответ, который конкретно отвечает на мой вопрос. Например, этот вопрос здесь как использовать> = условие в SQL-выражении case? . Я также пробовал динамический запрос с временной таблицей, и это не помогло.

Вот мой код с определением таблицы и тестовыми данными, а также фактическим запросом, который я выполняю.

--table definition with two columns
declare @table table 
               (
                    person nvarchar(20),
                    digit decimal(10,2)
               )

--insert test data with two records
insert into @table
    select 'titimo', 9.51
    union 
    select 'neriwo', 12.25

--the requirement is to not show the digit value if it is greater or equal to 10, but rather display an empty field.
--so, this is my select statement to meet this requirement that is failing 
--with error message 'Incorrect syntax near >'
select
    person,
    case digit
        when digit >= 10 then ''
        else digit
    end 'digit'
from @table

Из моего утверждения select выше, я ожидаю такого вывода:

person digit
------ -----
titimo 9.51
neriwo 

Однако вывод не генерируется из-за сообщения об ошибке, которое я получаю.

Ответы [ 2 ]

2 голосов
/ 06 июня 2019

В вашем case произошла синтаксическая ошибка. Более того, вы не можете смешивать типы данных, поэтому вам нужно привести digit к varchar или изменить '', т.е. null.

select
    person,
    case 
        when digit >= 10  then ''
        else cast(digit as varchar(20))
    end 'digit'
from @table
1 голос
/ 06 июня 2019

Ваш случай не отформатирован правильно - вот один вариант - (также вы не можете выбрать текст и цифры в одном столбце - поэтому я преобразовал ваш номер в текст ... настроить в соответствии с вашими потребностями)

select
    person,
    case when digit >=10 then ''
        else CONVERT(VARCHAR(10), digit)
    end 'digit'
from @table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...