Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用函数将MySQL数字字段更改为char_Mysql - Fatal编程技术网

使用函数将MySQL数字字段更改为char

使用函数将MySQL数字字段更改为char,mysql,Mysql,我在MySQL数据库中有一个表,其中有一个用于存储IP地址的字段。它将其存储为数字int。我想将结构改为使用字符串char 是否可以使用单个ALTER TABLE语句?就我在Postgres中所见,可以指定一个转换函数来更改表,但我没有看到MySQL的等效函数 解决办法当然是: 通过添加新的char字段来更改表 使用inet_ntoa从旧字段更新新字段 通过删除旧字段来更改表 最后将新字段重命名为旧字段的名称 但也许有一个更简单的解决方案 只需将列更改为varchar即可。mysql将自动转换这

我在MySQL数据库中有一个表,其中有一个用于存储IP地址的字段。它将其存储为数字int。我想将结构改为使用字符串char

是否可以使用单个ALTER TABLE语句?就我在Postgres中所见,可以指定一个转换函数来更改表,但我没有看到MySQL的等效函数

解决办法当然是:

通过添加新的char字段来更改表 使用inet_ntoa从旧字段更新新字段 通过删除旧字段来更改表 最后将新字段重命名为旧字段的名称
但也许有一个更简单的解决方案

只需将列更改为varchar即可。mysql将自动转换这些值。我可以用mysql 5.6来证实这一点。
但在执行此操作之前,您应该明确地创建一个备份,并可能使用一个小测试表来尝试此操作。

IP地址是字符串,对吗?可能是@草莓-no的重复项。它们作为inet\u aton的结果存储。例如,10.201.111.4存储为180973316。@StefanR-这是一个类似但不相同的名称。我想将类似180973316的内容转换回表示ip的字符串。我对将其转换为字符串180973316不感兴趣。那么inet_ntoa有什么问题吗?嗯,它对我不起作用。我已将IP转换为1个数字并存储。例如,10.201.111.4存储为180973316。如果你把它转换成varchar,我会得到180973316。但我想要10.201.111.4。@MirekOpoka所以,这是一个两阶段的过程。或者为转换后的IP创建单独的列或表。