Mysql 如何正确地将varchar转换为int?
我已经准备了这样的sql查询Mysql 如何正确地将varchar转换为int?,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我已经准备了这样的sql查询 UPDATE Towar JOIN TowarZamowienie ON Towar.Tow_id = TowarZamowienie.Tow_id SET Tow_ilosc = Tow_ilosc - CAST(TowZam_ilosc AS UNSIGNED); 它会返回修改过的记录:0。我承认数据库里有记录 这是我的桌子: TowarZamowienie 1 TowZam_id int(19) AUTO_INCREMENT 2
UPDATE Towar
JOIN TowarZamowienie ON Towar.Tow_id = TowarZamowienie.Tow_id
SET Tow_ilosc = Tow_ilosc - CAST(TowZam_ilosc AS UNSIGNED);
它会返回修改过的记录:0。我承认数据库里有记录
这是我的桌子:
TowarZamowienie
1 TowZam_id int(19) AUTO_INCREMENT
2 Tow_id int(255)
3 Zam_id int(255)
4 TowZam_ilosc varchar(10)
这是我的模式试试这段代码
UPDATE Towar
JOIN
TowarZamowienie ON Towar.Tow_id = TowarZamowienie.TowZam_id
SET
Tow_ilosc = Tow_ilosc - CAST(TowZam_ilosc AS UNSIGNED);
为什么不将整数“强制”为Varchar?如果Varchar实际上有10个字符,而整数只需要6个数字呢?试试这个:
CAST(Tow_ilosc as CHAR(10))
或
或者在where子句中使用类似的
WHERE Tow_ilosc LIKE TowZam_ilosc
(我不喜欢)^^ ^我想你在ON子句中犯了错误
试试这个
ON Towar.Tow_id = TowarZamowienie.TowZam_id
--或
看看这个。。。可能重复@chris_techno25这不是重复的,因为我没有错误。如果可能,展示你的示例数据或小提琴!啊,我明白了,那么我是对的。如果您向我们展示一个示例数据,肯定会更容易:)@echo\u Me这里的值必须先从字符串转换为int看看这个,它应该更改值,其中tow\u id与towarzamovienie@user3310883中的tow\u id相同,我已经看到了图像,但您有两个zam\u ilosc是0根据two\u zam 5,这将是99?在这种情况下,它应该返回100-0=100,没有变化,但当TowZam_ilosc为例如1时,它应该在Towar中返回99。Tow_iloscI不明白为什么Towar id为16或更多的Towar发生了变化。。在这种情况下,唯一修改的Towar应该是Towar id为5的Towar,请尝试对您发布的示例使用代码格式。使它更容易阅读。谢谢:)
WHERE Tow_ilosc LIKE TowZam_ilosc
ON Towar.Tow_id = TowarZamowienie.TowZam_id
UPDATE Towar, TowarZamowienie
SET Towar.Tow_ilosc = Towar.Tow_ilosc - CAST(TowarZamowienie.TowZam_ilosc AS UNSIGNED)
WHERE Towar.Tow_id = TowarZamowienie.TowZam_id;
UPDATE Towar
JOIN TowarZamowienie ON Towar.Tow_id = TowarZamowienie.TowZam_id
SET Tow_ilosc = Tow_ilosc - CAST(TowZam_ilosc AS UNSIGNED);