2017-02-10 14 views
0

私はINSERT INTOに奇妙な問題を抱えています。 - UNION SELECT "L" の特許請求の範囲からCLAIM_FACT AS & CLAIM_NO CLAIM_NO '構文エラー(演算子がありません)クエリ式の' CLAIM_NO LIKE "":私はこのエラーを取得するINSERT INTOに構文がありませんか?

INSERT INTO Claims_temp (CLAIM_NO) 
SELECT CLAIM_NO AS CLAIM_FACT 
FROM CLAIMS 
WHERE CLAIM_NO LIKE "*-*" 
UNION 
SELECT "L" & CLAIM_NO AS CLAIM_FACT 
FROM CLAIMS 
WHERE CLAIM_NO NOT LIKE "*-*"; 

:次のクエリを実行しようとすると、 "-"のようにはなりません。

INSERT INTO Claims_temp行を削除すると、クエリが実行され、正しい結果が得られます。私は構文エラーを見ることができません。また、テーブルを指定しようとしました。つまり、CLAIM_NOを使用する代わりに、SELECTクエリ部分にCLAIMS.CLAIM_NOを使用します。

+0

@GurVは、私がアクセスで考える '*'代わりにANSI '%'返信用 – HoneyBadger

+0

おかげで使用されています。これらの変更でも問題は解決されません。さらに、クエリ結果は、*ではなく%演算子では正しくありません。 –

答えて

2

これは奇妙なアプローチのようです。理由だけでない。

INSERT INTO Claims_temp (CLAIM_NO) 
    SELECT IIF(CLAIM_NO LIKE "*-*", CLAIM_NO, "L" & CLAIM_NO) AS CLAIM_FACT 
    FROM CLAIMS; 

SELECT DISTINCTを使用し、その後、重複(UNION除去)があることができれば。

+0

ねえ、これは素晴らしいです!申し訳ありませんが、奇妙なアプローチでは、私はまだかなり新しいSQLですので、構文のいくつかは私には分かりません(たとえばIIF)。 –

1

私はゴードンの答えは正しいと思いますが、理由を説明するサプリメントを追加したいと思います。

このエラーは、SQLパーサが文を理解できないが、挿入行が追加されたときに問題が発生しているように見えることを示しています。

これは、パーサーがSELECTとは異なる構文としてINSERT ... SELECTを処理しているため、通常のパイプラインではUNIONがサポートできない可能性があることを示しています。

これがうまくいかない場合は、インラインビューを試してみましょう。ような何か:

INSERT INTO Claims_temp (CLAIM_NO) 
SELECT claim_fact FROM (
SELECT CLAIM_NO AS CLAIM_FACT 
FROM CLAIMS 
WHERE CLAIM_NO LIKE "*-*" 
UNION 
SELECT "L" & CLAIM_NO AS CLAIM_FACT 
FROM CLAIMS 
WHERE CLAIM_NO NOT LIKE "*-*") AS foo; 
+0

ありがとうございます。私はサブクエリをできるだけ避けようとします。なぜなら、彼らは私のためにAccessを破る傾向があるからです。 –

+0

また、コードを読みにくくします。ゴードンの答えは最高です。しかし、うまくいけば、これはなぜそれが起こっているかについてのいくつかの光を出す:-) –

+0

間違いなく!再度、感謝します! –

関連する問題