MySQL结果是0,尽管我可以在表中看到它

MySQL结果是0,尽管我可以在表中看到它,mysql,Mysql,大家好,我有一个有趣的问题,我从来没有遇到过,但它似乎是经常出现在这里,但没有一个是完全像我的情况 我在MySQL中有一个表,它保存从.csv导入的供应商数据 然后根据供应商代码匹配产品 然而,尽管我可以在表格中看到预期的结果,但这样做并没有给我带来匹配 我的问题是: SELECT `dealer` , `qty` FROM `supplier_import_all` WHERE `supplier_id` = '13' AND `supplier_code` = 'DIGIT

大家好,我有一个有趣的问题,我从来没有遇到过,但它似乎是经常出现在这里,但没有一个是完全像我的情况

我在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);

仍然有兴趣知道为什么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,甚至尝试:选择*FROM
supplier\u import\u all
WHERE
supplier\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
选择无问题,只需
供应商代码