2016-08-24 18 views
3

IFを使用してクエリを作成したいと思いますが、このクエリは何が問題なのですか?IF条件が正しく動作しない

SELECT 
IF(Emp.Name is not null)  
     ((Emp.Name) + '_' + (Emp.LastName)) as ID 
else 
    Emp.ID 

私はこのエラーを取得する:

Incorrect syntax near the keyword 'IF'. 

それはなぜですか?

ありがとうございます。

+1

SQL ServerまたはMySQL? –

+0

SQLには「IF」はありません。あなたがしようとしていることを教えてください。サンプルテーブルのデータと予想される結果を追加します。 – jarlh

+0

構文は 'SELECT IF(condition、iftrue、iffalse)AS colname'です。[リンク](https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html) – user5226582

答えて

4

あなたはCASE EXPRESSION使用することができます:SQL-Serverの(私は、連結構文によって仮定)で異なって行われ

SELECT CASE WHEN emp.name is not null THEN emp.name + '_' + emp.lastName 
      ELSE Emp.id 
     END as [ID] 
FROM ... 

IF()、意味

IF (Condition) 
    SQL STATEMENT 
ELSE 
    SQL STATEMENT 

をあなたが全体の選択を実行する必要があります各ブロックでIF()のあなたの種類は、あなたがCASE句でこれを実行する必要がIF(Condition , THEN , ELSE)

2

は、MySQLで使用されます。

SELECT 
CASE WHEN (Emp.Name IS NOT NULL)  
    THEN ((Emp.Name) + '_' + (Emp.LastName)) 
ELSE 
Emp.ID 
END as ID 

IF..ELSE構文は多少異なります:それはSQLサーバーベースだと仮定すると、

IF(Emp.Name IS NOT NULL)  
    SELECT ((Emp.Name) + '_' + (Emp.LastName)) AS ID 
ELSE 
    SELECT Emp.ID AS ID 
1

あなたの構文でこれを使用してください:

SELECT CASE <variable> WHEN <value>  THEN <returnvalue> 
         WHEN <othervalue> THEN <returnthis> 
             ELSE <returndefaultcase> 
    END AS <newcolumnname> 
FROM <table> 
0

usinf IFではなく、CASEをSELECT文で使用できます。このようなもの

SELECT 
    CASE Emp.Name 
    WHEN NULL THEN Emp.ID 
    ELSE CONCAT(CONCAT(Emp.Name,'_'),Emp.LastName) 
    END AS "ID" 
FROM Emp; 

希望します。

関連する問題