我想使用IF
编写查询,但它不起作用,此查询有什么问题?
SELECT
IF(Emp.Name is not null)
((Emp.Name) + '_' + (Emp.LastName)) as ID
else
Emp.ID
我收到此错误:
Incorrect syntax near the keyword 'IF'.
为什么?
谢谢。
答案 0 :(得分:4)
您可以使用CASE EXPRESSION
:
SELECT CASE WHEN emp.name is not null THEN emp.name + '_' + emp.lastName
ELSE Emp.id
END as [ID]
FROM ...
在SQL-Server中执行IF()
的方式不同(我假设使用concat语法),
IF ( Condition )
SQL STATEMENT
ELSE
SQL STATEMENT
这意味着您需要在每个块中执行整个选择。您的IF()
用于MySQL,IF(Condition , THEN , ELSE )
答案 1 :(得分:2)
您需要在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
答案 2 :(得分:1)
假设它是基于语法的SQL Server,请使用:
if [ -d $BACKUP_DIR/FULL ]; then
mkdir $BACKUP_DIR/$YESTERDAY
mv $BACKUP_DIR/FULL $BACKUP_DIR/$YESTERDAY
for dir in $BACKUP_DIR/inc*; do
mv $BACKUP_DIR/inc* $BACKUP_DIR/$YESTERDAY
done
tar -cvf $BACKUP_DIR/$YESTERDAY.tar $BACKUP_DIR/$YESTERDAY
rm -rf $BACKUP_DIR/$YESTERDAY
gzip $BACKUP_DIR/$YESTERDAY.tar
fi
答案 3 :(得分:1)
在查询中尝试使用Case检查此MySQL: CASE Function
答案 4 :(得分:0)
您可以在SELECT语句中使用CASE,而不是usinf IF。像这样的东西
SELECT
CASE Emp.Name
WHEN NULL THEN Emp.ID
ELSE CONCAT(CONCAT(Emp.Name,'_'),Emp.LastName)
END AS "ID"
FROM Emp;
希望它有所帮助。