MySQL结果是0,尽管我可以在表中看到它
大家好,我有一个有趣的问题,我从来没有遇到过,但它似乎是经常出现在这里,但没有一个是完全像我的情况 我在MySQL中有一个表,它保存从.csv导入的供应商数据 然后根据供应商代码匹配产品 然而,尽管我可以在表格中看到预期的结果,但这样做并没有给我带来匹配 我的问题是:MySQL结果是0,尽管我可以在表中看到它,mysql,Mysql,大家好,我有一个有趣的问题,我从来没有遇到过,但它似乎是经常出现在这里,但没有一个是完全像我的情况 我在MySQL中有一个表,它保存从.csv导入的供应商数据 然后根据供应商代码匹配产品 然而,尽管我可以在表格中看到预期的结果,但这样做并没有给我带来匹配 我的问题是: SELECT `dealer` , `qty` FROM `supplier_import_all` WHERE `supplier_id` = '13' AND `supplier_code` = 'DIGIT
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);
仍然有兴趣知道为什么trim不起作用,因为我确信它一定是数据周围某个地方的白色间隔,这一点在这里得到了其他人的重申。您确定供应商代码中没有任何空格吗?当您从csv导入时,有时可能会发生这种情况。如果您有主键,请按主键查找该记录。在查询同一个pl时,数据库中可能存储了一些不存在的额外空间,请尝试使用like运算符,并查看问题是否仍然存在。如果是,那么这真的很奇怪。如果您有show create table(显示创建表),则会有所帮助 似乎列中有错误或额外的数据 试试这个
选择经销商,数量
从供应商处进口
其中trim(供应商id)=“13”
和装饰(供应商代码)=“DIGITAL979”
限制0,30
如果这不起作用,试试这个
选择经销商,数量
从供应商处进口
其中trim(供应商id)=“13”
限制0,30
如果行得通,试试这个
选择经销商,数量
从供应商处进口
其中trim(供应商代码)=“DIGITAL979”
限制0,30
这将帮助您确定哪列包含错误数据。
从文件导入数据时,通常会添加额外的空格/字符
编辑
因为我们现在知道了suplier_code列的问题。尝试修复该列中的数据。
试试这个
`
更新供应商\u导入\u所有
设置供应商代码=修剪(供应商代码)
更新供应商\u导入\u所有
设置供应商代码=修剪(供应商代码中的两个“\t”)
更新供应商\u导入\u所有
设置供应商代码=修剪(来自供应商代码的两个“\n”);
`
13
在列中右对齐,这意味着它可能是数字类型,而不是文本类型。试一试
...
WHERE `supplier_id` = 13 AND ...
(在
13
周围没有字符串分隔符)Yer,甚至尝试:选择*FROMsupplier\u import\u all
WHEREsupplier\u code
如“%FS-510N%”限制0,30在将每个变量添加到数据库之前,我会得到0个结果,甚至会向每个变量添加trim(),以确保没有多余的空格不起作用。但删除“供应商代码”确实起到了作用。所以,是的,在某个地方有坏数据,这可能是表本身,或者实际上是这个列中的数据吗?它可能是那个列中的数据。尝试从supplier_import_all'中选择concat(“”,supplier_code,“”),看看vales做了什么,让您检查第一个双引号后的值和最后一个引号前的值。上面的更新返回0个结果,上面的查询返回的所有结果如下:“DIGITAL979”您是否可以显示show create table suplier\u import\u all
的输出?如果suplier\u id='13'有数据问题,您是否可以使用一些数据创建SQL FIDLE()。只需调查即可。通过供应商id
选择无问题,只需供应商代码