2016-09-12 8 views
0

このSQL文の実行に問題があります。私はTSQLを初めて使用しているので、これを修正する方法はわかりません。私はこれを実行するたびに、私はエラーを取得する:IF-ELSE SQL文

私はここで何をしようとしている

An expression of non-boolean type specified in a context where a condition is expected, near ')'.

Incorrect syntax near the keyword 'else'.

if 
SELECT Num from users where SUBSTRING(CAST(Num AS VARCHAR(6)),1,2) = 14 
    print 'Batch 2014'; 
else 
    print 'Batch 2013'; 

は私のテーブル内の列の最初の2個の数字「のNumとして「13」を持つすべてのユーザーを検索することです」、その後、印刷 『バッチ2014』他 『バッチ2013は』 :)助けてくださいそれが存在するとif-elseの使用を避けるのがベストですあなた

答えて

0

に感謝します。どうして?

  1. は、あなたのテーブル
  2. EXISTSの他の利点は、それが一致する単一のレコードを見つけたら、それは処理を停止していることであるに少なくとも1つのレコードが存在することを確認する必要があります。主キーをチェックしている場合、これは大きな影響を与えません。あなたが別のフィールド

    if exists (SELECT Num from users where SUBSTRING(CAST(Num AS VARCHAR(6)), 1, 2) = 14) 
        print 'Batch 2014'; 
    else 
        print 'Batch 2013';` 
    
+0

ありがとう!それは動作しますが、「Num」の列の最初の2つの数字として「14」のユーザーのみを選択する必要があります。どうすればいいの? – Briana

+0

のようなテストコンパレータ 'num like '14%' ' –

+0

もう一度ありがとう! '%'記号の目的は何か分かりますか? :) – Briana

0
IF EXISTS (SELECT Num 
      FROM users 
      WHERE SUBSTRING(CAST(Num AS VARCHAR(6)), 1, 2) = 14) 
    PRINT 'Batch 2014' ; 
ELSE 
    PRINT 'Batch 2013' ; 
0

何のNumの種類に基づいて存在をチェックしている場合、それは大きな影響がありますか? IF-ELSE

構文:だから

-- Syntax for SQL Server, Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse 

IF Boolean_expression 
    { sql_statement | statement_block } 
[ ELSE 
    { sql_statement | statement_block } ] 

、 "SELECT Num from users where SUBSTRING(CAST(Num AS VARCHAR(6)),1,2) = 14" ブール、TrueまたはFalseを返す必要があります。

IF EXISTS (SELECT Num from users where SUBSTRING(CAST(Num AS VARCHAR(6)),1,2) = 14) 
0

あなたif条件が非ブール値を返します(他のもの0または1)、それがエラーを取得するための理由です。

if .. existsを使用している場合は、表のnumのいずれかが条件SUBSTRING(CAST(Num AS VARCHAR(6)),1,2) = 14を満たしていれば印刷されます。

バッチ情報を持つユーザーを表示する場合は、CASE文を使用します。

SELECT userid,Name -- mention the columns you wanted to select 
     ,CASE WHEN SUBSTRING(CAST(Num AS VARCHAR(6)),1,2) =14 THEN 'Batch 2014' 
     ELSE 'Batch 2013' END Batch 
FROM users 
+0

'if'はブール値ではない値を返しますか? –

関連する問題