2016-07-25 15 views
1

この質問はFirebirdでエラーを投げていますが、そのエラーを解決する方法は?ここでFirebirdの "Token unknown"エラー

SELECT EMPNO,SAL 
     FROM EMP E 
     where EMPNO = (SELECT MAX(DEPTNO) FROM DEPT D WHERE E.ENAME NOT like (SELECT TOP 1 ENAME 
                       FROM emp E1 
                       WHERE E1.EMPNO=D.DEPTNO)) 
     OR 1 = (SELECT MAX(DEPTNO) 
       FROM DEPT D 
       WHERE E.ENAME like substring('NAME111',1,5)) ORDER BY EMPNO; 

はエラーです。

次のエラー情報は、=失敗

ODBC呼び出し= SQLPrepareW()

SQLステート= HY000

ネイティブエラー= -104(FFFFFF98)

エラーメッセージについて説明し[ODBC Firebird Driver] [Firebird]動的SQLエラー

SQLエラーコード= -104

トークン不明 - 行1、列111

答えて

5

(編集代替を含むように、コメントから、より近代的な構文)

代わりのSELECT TOP 1 ENAME、次のいずれかを使用します:

  • SELECT ENAME ...FETCH FIRST ROW ONLY(SQL:2008、Firebirdの3+)
  • また
  • SELECT ENAME ...ROWS 1(非標準的な、火の鳥2+)
  • FIRST 1
  • SELECTENAME ...(非標準的な、効果的Firebirdの1.5+)

substring('NAME111' from 1 for 5) 

代わりに

を使用
substring('NAME111',1,5) 

たとえば、 FIRST 1を使用して:

+0

エラーの変更はありません – kvk30

+0

同じ列ですか? –

+2

@ kvk30: "しかし、SQLは空ではない"とは意味がありません。 Firebirdはクエリ言語としてSQLを使用します。だからFirebird **で書いたものは** "SQL" –

関連する問題