2017-12-15 173 views
0

クエリで次のエラーが表示されます。DB2 decfloatエラー

"DECFLOAT"関数の文字列引数に無効な文字が見つかりました。

は、しかし、私は私が選択していますフィールドのいずれかに変更はありません:あなたの比較の

select 
RQH.COMPANY, 
RQH.LAST_APRV_DT, 
RQH.CREATION_DATE, 
RQH.RELEASED_DATE, 
RQH.REL_OPER_ID, 
RQH.REQ_NUMBER, 
RQH.REQUESTER, 

RLN.COMPANY, 
RLN.BUYER, 
RLN.DESCRIPTION, 
RLN.TRAN_UNIT_COST, 
RLN.QUANTITY, 
RLN.ITEM, 
RLN.VEN_ITEM, 
RLN.LINE_NBR, 
RLN.MANUF_CODE, 
RLN.MANUF_NBR, 
RLN.VENDOR, 
RLN.REQ_NUMBER, 
RLN.ENTERED_UOM, 


MMD.LINE_NBR, 
MMD.DOC_NBR_NUM, 

VEN.VENDOR_VNAME, 
VEN.VENDOR_GROUP, 
VEN.VENDOR 

from mmd 

join rln on MMD.COMPANY = rln.COMPANY and MMD.DOC_NBR_NUM = rln.REQ_NUMBER 
    and MMD.LINE_NBR = rln.LINE_NBR 

join cpy on rln.company = cpy.company 

join ven on VEN.VENDOR_GROUP = cpy.VENDOR_GROUP and VEN.VENDOR = rln.VENDOR 

join rqh on RLN.COMPANY = RQH.COMPANY and RLN.REQ_NUMBER = RQH.REQ_NUMBER 

where ven.vendor = 20200 
+0

ここではDECFLOAT関数が呼び出されることはありません。トリガーの問題のようなにおいがします。それではまた、あなたは選択をしているだけです...それは暗黙の変換を伴うデータ型の問題だと私に思います。 DB2に精通していないので、塩の粒でそれを取る。 –

+0

これらのビューはありますか? –

+0

@JacobHいいえ、私はテーブルから直接引っ張っています。私はそれをさらに検討していましたが、問題は私のwhereステートメントに関連しているように見えますが、理由は分かりません。別の同様のクエリで問題のない同じテーブルを実行しました。 –

答えて

0

一つは、片側の数値データ型や他の文字データ型を持っています。そのペアの文字列の値の1つを数値に変換することはできません。 Db2 data type conversion rulesは、一方のオペランドが数値で他方が文字型である場合、文字値は暗黙的に強制的に数値に変換されることを示します。これは、強制できない値に対しては、明らかに失敗します。そのような値が有効な場合は、数値列を文字データ型に明示的にキャストする必要があります(必要に応じてスペースで埋めてください)。

+0

私はチェックし、すべての比較の組は同じデータ型を持っています –

+0

あなたは 'ven.vendor'が' character(9) 'だと言って、それを整数値' 20200'と比較しています – mustaccio

+0

申し訳ありません、上記のクエリで、 "ven.vendor = 20200"を使用すると、上記のエラーが表示されます。 "ven.vendor = '20200'を使用すると、データが返されません。 "ven.vendor = 20200"を使用すると、 'ven'テーブルも使用する別のクエリでは、データが生成されます。両方のクエリには、データを入力する必要があります(これは内部結合の問題ではありません)。 –

0

「WHERE」節を完全に削除した場合でも、エラーが表示されるのはなぜですか?

+0

デフロートの問題が出てきたら、代わりに日付フィールドを使ってみたところ、問題なく走った –