大家好,我遇到了一个从未遇到过的有趣问题,但这似乎经常在这里出现,但没有一个与我的情况完全一样。
我在 MySQL 中有一个表,其中保存从 .csv 导入的供应商数据
然后我通过供应商代码匹配产品。
但是,在执行此操作时,即使我可以在表中看到预期结果,我也没有收到匹配结果。
这是我的询问:
SELECT `dealer` , `qty`
FROM `supplier_import_all`
WHERE `supplier_id` = '13'
AND `supplier_code` = 'DIGITAL979'
LIMIT 0 , 30
MySQL 结果消息:
MySQL 返回一个空结果集(即零行)。 (查询采取 0.0027 秒)
这是不对的,我可以在 PHPMyAdmin 的表中看到该条目:
任何关于这个的想法都将非常感激,因为我很困惑。
在插入数据库之前添加了以下内容,似乎已经解决了问题:
$supplier_code = str_replace(' ', '', $supplier_code);
$supplier_code = preg_replace('/[^A-Za-z0-9\-]/', '', $supplier_code);
仍然有兴趣知道为什么修剪不起作用,因为我确信它一定只是数据周围某处的白色间距,这已经被其他人在这里重申了。
如果您的节目创建表格将会有所帮助。
您的列中似乎有错误或多余的数据。
试试这个
SELECT dealer , qty
FROM supplier_import_all
WHERE trim(supplier_id) = '13'
AND trim(supplier_code) = 'DIGITAL979'
LIMIT 0 , 30
如果这不起作用,请尝试这个
SELECT dealer , qty
FROM supplier_import_all
WHERE trim(supplier_id) = '13'
LIMIT 0 , 30
如果有效,请尝试这个
SELECT dealer , qty
FROM supplier_import_all
WHERE trim(supplier_code) = 'DIGITAL979'
LIMIT 0 , 30
这将帮助您识别哪一列包含错误数据。 通常,当您从文件导入数据时,会添加额外的空格/字符。
已编辑 因为我们现在知道了 sulier_code 列的问题。 尝试修复该列中的数据。 试试这个 ` 更新供应商进口全部 设置供应商代码=修剪(供应商代码);
更新供应商_进口_全部 设置供应商代码=修剪(来自供应商代码的“”);
更新供应商_进口_全部 设置供应商代码 = 修剪(两者“ “来自供应商代码); `
您确定supplier_code 中没有空格吗?当您从 csv 导入时,有时可能会发生这种情况。通过主键查找该记录(如果有)。
似乎数据库中存储了一些额外的空间,而在查询相同的pl时尝试使用like运算符,看看问题是否仍然存在,如果是的话,那真的很奇怪
13
在列中右对齐,这意味着它可能是数字类型,而不是文本类型。尝试一下
...
WHERE `supplier_id` = 13 AND ...
(
13
周围没有字符串分隔符)