SQL-запрос:Как использовать тернарный оператор в SQL Server 2008?
SELECT *
FROM Account
WHERE (type <>100000002 ? Id='something': Id=null)
но он показывает сообщение об ошибке: '?'
Неправильный синтаксис около
Пожалуйста, помогите мне.
SQL-запрос:Как использовать тернарный оператор в SQL Server 2008?
SELECT *
FROM Account
WHERE (type <>100000002 ? Id='something': Id=null)
но он показывает сообщение об ошибке: '?'
Неправильный синтаксис около
Пожалуйста, помогите мне.
Это для SQL Server. IIF
недоступен в SQL Server 2008 или ранее.
SELECT *
FROM Account
WHERE
Id=IIF(type<> 100000002,"something",null)
Если вы используете SQL Server 2008 или ранее, попробуйте это.
SELECT *
FROM Account
WHERE (Id= CASE WHEN type <>100000002 THEN 'something' ELSE null END)
Если вы рассмотрите лучшие практики, вам следует избегать использования IIF, потому что его функция и она медленнее, чем оператор CASE WHEN –
Вы можете сделать это:
SELECT *
FROM Account
where (type <>100000002 and Id='something') or (type =100000002 and id is null)
или
SELECT *
FROM Account
where isnull(id,'_null_')= case when type <>100000002 then 'something' else isnull(id,'_null_') end
+1 для 'null. –
+1 для первого T-SQL, Simple T-SQL для простой логики – Punter015
@ Punter015 Спасибо. –
SELECT *
FROM Account
WHERE (Id= CASE WHEN type <>100000002 THEN 'something' ELSE null END)
вы всегда не делаете 'id = null' –
Однако обратите внимание, что с нулевыми значениями ANSI это, вероятно, не будет работать так, как предполагалось, так как' null = null' фактически является ложным. Вместо этого вы должны использовать 'Id is null'. – Luaan
@RoyiNamir - Да, я видел ваш второй запрос в вашем ответе. Спасибо ... –
Вы можете использовать случай, когда ... то в SQL см по ссылке http://blog.sqlauthority.com/2007/04/14/sql-server-case-statementexpression-examples-and-explanation/
Используйте следующие:
SELECT *
FROM Account
WHERE (Id= CASE WHEN type != 100000002 THEN 'something' ELSE null END)
или
SELECT *
FROM Account
WHERE (Id= CASE WHEN type <> 100000002 THEN 'something' ELSE null END)
SELECT *
FROM Account
where (type <>100000002 and Id='something') or (type =100000002)
дорогой способ не использовать СЛУЧАЙ Постулаты или IF Else – Developerzzz
если вам нужен пример или случай или IF Else, то дайте мне знать, я пошлю вам пример – Developerzzz
'где (тип <> 100000002 и Id =» что-то ') или (type = 100000002 и id равно null) ' –