我想写一个查询使用IF
,但它不工作,这个查询有什么问题?如果条件无法正常工作
SELECT
IF(Emp.Name is not null)
((Emp.Name) + '_' + (Emp.LastName)) as ID
else
Emp.ID
我得到这个错误:
Incorrect syntax near the keyword 'IF'.
这是为什么?
谢谢。
我想写一个查询使用IF
,但它不工作,这个查询有什么问题?如果条件无法正常工作
SELECT
IF(Emp.Name is not null)
((Emp.Name) + '_' + (Emp.LastName)) as ID
else
Emp.ID
我得到这个错误:
Incorrect syntax near the keyword 'IF'.
这是为什么?
谢谢。
您可以使用CASE EXPRESSION
:
SELECT CASE WHEN emp.name is not null THEN emp.name + '_' + emp.lastName
ELSE Emp.id
END as [ID]
FROM ...
的IF()
在SQL-服务器(我假设由CONCAT语法)执行不同,
IF (Condition)
SQL STATEMENT
ELSE
SQL STATEMENT
这意味着你需要执行整个选择在每个块中。你这样的IF()
在MySQL的使用,IF(Condition , THEN , ELSE)
你需要做的这一个CASE
条款:
SELECT
CASE WHEN (Emp.Name IS NOT NULL)
THEN ((Emp.Name) + '_' + (Emp.LastName))
ELSE
Emp.ID
END as ID
的IF..ELSE
语法有所不同:
IF(Emp.Name IS NOT NULL)
SELECT ((Emp.Name) + '_' + (Emp.LastName)) AS ID
ELSE
SELECT Emp.ID AS ID
假设它基于的SQL服务器在你的语法上使用这个:
SELECT CASE <variable> WHEN <value> THEN <returnvalue>
WHEN <othervalue> THEN <returnthis>
ELSE <returndefaultcase>
END AS <newcolumnname>
FROM <table>
而不是使用IF,您可以在SELECT语句中使用CASE。像这样的东西
SELECT
CASE Emp.Name
WHEN NULL THEN Emp.ID
ELSE CONCAT(CONCAT(Emp.Name,'_'),Emp.LastName)
END AS "ID"
FROM Emp;
希望它有帮助。
尝试在您的查询中使用Case检查此MySQL: CASE Function
SQL Server或MySQL? –
SQL没有'IF'。告诉我们你想要做什么。添加样本表数据和预期结果。 – jarlh
语法是'SELECT IF(condition,iftrue,iffalse)AS colname' [link](https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html) – user5226582