小弟新學MySQL,遇到問題查了好久也沒找出問題,跪求各路大神相助!
問題:我用load data 函式將csv檔案(已經轉換為utf8-csv編碼格式)匯入到我新建的一張表mytable里,然后select * from mytable可以查詢到所有行。但按照欄位查詢 select * from mytable where col.name=' xxx ' 時就出現了問題:如果col.name欄位里的data是數值型或是文字型,該查詢陳述句會回傳符合條件的記錄;如果col.name欄位里的data是英文字串,就沒有記錄回傳,盡管表里
是存在符合查詢條件的行的。
原因:小弟網上查了很久,很多類似問題都是不能按照data為中文的欄位進行查詢,可我的卻是不能按照data為英文的欄位進行查詢,實在頭疼。是不是csv檔案的data編碼格式沒有完全轉換為utf8格式,導致新表對應欄位與data編碼格式不一致?
用show variables like 'character_set_database';
查看了mysql資料庫及表編碼格式 都是utf8格式,不知道問題在哪,求高人解答,謝謝!!
Variable_name |Value |
-------------------------|--------------------------------------------------------|
character_set_client |utf8 |
character_set_connection |utf8 |
character_set_database |utf8 |
character_set_filesystem |binary |
character_set_results | |
character_set_server |utf8 |
character_set_system |utf8 |
character_sets_dir |C:\Program Files\MySQL\MySQL Server 5.7\share\charsets\ |
uj5u.com熱心網友回復:
檢查一下欄位型別是什么,欄位保存的有沒有空格uj5u.com熱心網友回復:
謝謝回復 我的條件欄位是varchar(255)定義的 這列欄位的data都是英文字串 我用通配符檢查過也不是空格的問題 就是不能按照這種資料都是英文字串的欄位查詢 而資料型別是數值型 或者 漢字的都可以
uj5u.com熱心網友回復:
大哥,我剛剛又試了下通配符,發現確實是空格的問題 。
但是我不明白csv讀進新表后英文資料后面為什么會產生空格?是原來的csv表里就有空格還是讀取的程序中在新表中資料后面產生的空格?
uj5u.com熱心網友回復:
按理說VARCHAR欄位型別的保存資料時資料庫不會自動補空格的, 所以就是還是在存盤的時候資料本身就含有空格。可能是你csv檔案在編碼轉換的程序中出的問題,簡單的測驗一下,就是load出檔案后直接匯入到新表中(不考慮中文字符),然后看看純英文欄位保存是否正常。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/118053.html
標籤:MySQL
