2017-11-29 8 views
0
to_t.COUNTRY_CD is varchar2(10 byte) 

from_t.DESCRIPTION is varchar2(60 bytes) 

オラクルのデータタイプの比較私は私が挿入したときに、私は、大きなデータをフィルタリングする必要がto_t.COUNTRY_CDのが条件

にfrom_t.DESCRIPTIONのデータを挿入します。ここで私は

を思い付いたSQLがある私はWHERE (from_t.DESCRIPTION <= 10 byte);

MERGE INTO ADV_TEST_BACKFILL_COUNTRY to_t 
    USING COUNTRY_CD from_t 
    ON (to_t.COUNTRY_CD = from_t.DESCRIPTION) 

    WHEN NOT MATCHED THEN INSERT (
    to_t.COUNTRY_CD, 
    to_t.DESCRIPTION, 
    to_t.CLOSED_IND, 
    to_t.UPDATE_WHO, 
    to_t.UPDATE_ON  
) 
    VALUES (
    from_t.DESCRIPTION, 
    from_t.DESCRIPTION, 
    from_t.CLOSED_IND, 
    from_t.UPDATE_WHO, 
    SYSDATE 
) WHERE (from_t.DESCRIPTION <= 10 byte); 

答えて

0

ような何かを行うことができますあなただけのlengthb()をしたいですか疑問?

where lengthb(from_t.DESCRIPTION) < 10 
0

...あなたは...あなたはおそらく、「スキップ」より大きなデータを持つ行が、それを切り捨てしたくない私には、ここで実現したいのか私には100%明確ではありません

とにかく、短い文字列に文字列を挿入しているので、小さな列を壊さないように部分文字列を抽出する必要があります。もちろん、いくつかのデータを失う可能性があります(文字11+はDESCRIPTIONです)。

VALUES (
    SUBSTR(from_t.DESCRIPTION,0,10), 
... 
+0

はい、あなたは正しいです。私は "スキップ"について再考する必要があります。 – kenpeter