從本地加載.csv文件時出現問題。我的領域已經從VARCHAR(20)變爲INT了。我知道後,使用該語法(這就是我想要的):加載數據本地INFILE後,MySQL字段從VARCHAR(20)更改爲INT
SELECT * FROM `len_enq_spph` WHERE po = '240000388';
其返回空
但是,如果我用這個語法:
SELECT * FROM `len_enq_spph` WHERE po = 240000388;
其回報就是我想要的。
po字段是VARCHAR(20)。 但是爲什麼該字段必須在哪裏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的列。爲什麼一個查詢返回行,另一個不是?這是因爲在返回行的查詢中,WHERE子句中的條件導致將'po'隱式轉換爲數字,以便與數字文字進行比較。使用字符字面值(單引號)不會發生轉換,只有在存儲在「po」中的字符串與字符串字面值相等時纔會滿足條件。我敢打賭,你在'po'列值的末尾有一個隱藏的''\ r'字符。 – spencer7593