我想寫一個查詢使用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