ローカルから.csvファイルをロードするときに問題があります。私のフィールドはVARCHAR(20)からINTに変更されました。LOAD DATA LOCAL INFILE後にMySQLフィールドがVARCHAR(20)からINTに変更されました
SELECT * FROM `len_enq_spph` WHERE po = '240000388';
その戻りヌル
をしかし、私はこの構文を使用する場合:私は、この構文を使用した後に(これは私が欲しいものである)ことを知っている私が欲しいもの
SELECT * FROM `len_enq_spph` WHERE po = 240000388;
その戻りを。
poフィールドはVARCHAR(20)です。 しかし、なぜそのフィールドはwhere句のINTでなければなりませんか? 私のcsvファイル
id|order_id|ext_ord_ref|order_id2__1
1|160000402|110005678|240000388
2|160000402|110005678|240000388
3|160000402|110005678|240000388
のこの例と、これは私のLOADの構文は次のとおりです。
LOAD DATA LOCAL INFILE 'c:\\temp\\SPPH.csv' INTO TABLE len_enq_spph
FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' IGNORE 1 LINES;
私は、特定の分野にしようとしたが、まだ動作していません。
号には、LOAD DATAは 'POの定義を変更されていません'列をVARCHAR(20)からINTに変換します。 1つのクエリで行が返されるのはなぜですか?なぜなら、行を返すクエリでは、数値リテラルとの比較を行うためにWHERE句の条件が暗黙的に 'po'を数値に変換しているからです。文字リテラル(一重引用符)では、変換は起こらず、 'po 'に格納された文字列が文字列リテラルと等しい場合にのみ条件が満たされます。 'po'カラムの値の最後に隠された '\ r''文字があると思います。 – spencer7593