在MySQL中将varchar转换为int

7

我在表route中有一个varchar类型的列airline_id,现在我想将该值复制到具有int类型的列airline_id_int中。但是我无法获得正确的语法..

这是我拥有的:

UPDATE route SET airline_id_int = CAST(airline_id, int);
4个回答

16

在执行CAST时,必须使用AS关键字。

update route set airline_id_int = cast(airline_id AS UNSIGNED)

您可以使用

update route set airline_id_int = cast(airline_id AS SIGNED)

同样也。


在MySQL中不能直接将类型转换为int。 - Obl Tobl
太好了!我在我的列中找到了一些非数字的值,更具体地说是“\N”。我该如何将所有的“\N”转换为0,其余的按上述方法转换? - user1907859
2
你可以使用REPLACE函数来实现。例如,如果列文本为“A\NISHV\NARYA”,则使用REPLACE('A\NISHV\NARYA','\N','0')。 - MusicLovingIndianGirl

4
尝试以下操作:
update route set airline_id_int = cast(airline_id AS UNSIGNED);

直接转换为int是不可能的。 如果需要有符号的整数,请将UNSIGNED替换为SIGNED


1
update route set airline_id_int = cast(airline_id as signed);

or

update route set airline_id_int = cast(airline_id as unsigned);

如果它可以是负数。

0

试试这个

update route set airline_id_int = CONVERT(airline_id, UNSIGNED);
update route set airline_id_int = CONVERT(airline_id, SIGNED);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接