我在 MySQL 表上的列 ( VARCHAR(513) NOT NULL ) 上遇到问题。
在从 CSV 文件导入的过程中,一堆行被填充了不知道从哪里来的一些奇怪的东西。
这些东西在 Workbench 中是不可见的,但是如果我使用以下命令查询 DBMS:
SELECT * FROM MyTable;
我得到:<b>ID | Drive | Directory | URI | Type ||</b>
1 | Z: | \Users\Data\ | \server\dati | 1 || // <-correct row
...
32 | NULL | \Users\OtherDir\ | | 0 ||
虽然第 1 行是正确的,但第 32 行显示了一个充满了某些内容的 URI。现在,如果我查询 dbms:SELECT length(URI) FROM MyTable WHERE ID = 32;
我得到了 32。同时,做:SELECT URI FROM MyTable WhERE ID = 32;
在 MFC 应用程序中,获取长度为 0 的字符串。在该程序中,我有一个用于处理该表的工具,但这无法工作,因为我无法构建关于具有错误 URI 的行的查询:我该如何解决这个问题?这个问题从何而来?如果您需要更多信息,请询问。 谢谢。
最佳答案
看起来您的数据中有空格,这是导致问题的原因,当您从 CSV 导入数据时,这种情况最常发生。
因此要修复它,您可能需要运行以下更新语句
update MyTable set URI = trim(URI);
以上将从列中删除空格。
此外,从 CSV 导入数据时,最好在将值插入数据库之前使用 TRIM()
,这样可以避免此类问题。
关于MySQL varchar 列已填充但不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24135217/