1

いくつかのフィールドを連結して、Oracle テーブルから各行に単一の文字列を返そうとしています。これは10gです。これが私のクエリです:

SELECT t.value || '|' || t.label || '|' t.label_abbrv || '||' "mylist" 
  FROM list_value t
 WHERE t.value BETWEEN 195001 AND 195300;

「期待される場所に FROM キーワードが見つかりません」というエラーが表示されます。これは本当に迷惑です。これは単純なクエリです。私が見逃しているのは単純なものだと確信しています。

4

3 に答える 3

2

SQLPLUS クライアントを使用していれば、少し時間を節約できたはずです。

SQL> SELECT value || '|' || label || '|' label_abbrv || '||' "mylist"
  2  from list_value where (value between 195001 and 195300);
SELECT value || '|' || label || '|' label_abbrv || '||' "mylist"
                                                *
ERROR at line 1:
ORA-00923: FROM keyword not found where expected

問題を切り分けるために、クエリを複数の行に分割できます。

SQL> edit
Wrote file afiedt.buf

  1  SELECT value || '|'
  2  || label ||
  3  '|' label_abbrv ||
  4  '||' "mylist"
  5  from list_value
  6  where
  7* (value between 195001 and 195300)
SQL> /
'|' label_abbrv ||
                *
ERROR at line 3:
ORA-00923: FROM keyword not found where expected

SQLPLUS が「原始的」であることに気付くかもしれませんが、うーん、それは別の質問に適しています。他の誰かがそれについてまだ尋ねているかどうか見てみましょう.

于 2009-09-17T14:04:01.500 に答える
2

ああ!問題が見つかりました。連結がありません!

SELECT value || '|' || label || '|' ****||**** label_abbrv || '||' "mylist"
from list_value where (value between 195001 and 195300);
于 2009-09-17T13:52:48.977 に答える
1

あなた自身の質問に対するあなたの答えはまだ間違っていると思います-それは次のようになるはずです:

SELECT value || '|' || label || '|' || label_abbrv || '||' "mylist" 
                                   ^^^^
于 2009-09-17T14:01:28.413 に答える