Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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列中的某些值_Mysql_Sql_Database - Fatal编程技术网

将前导零添加到MySQL列中的某些值

将前导零添加到MySQL列中的某些值,mysql,sql,database,Mysql,Sql,Database,我有一个CSV文件以CSV格式发送给我。感兴趣的字段是8位数字。其中一些以0开头。该字段已发送数字。我现在去掉了一些前导零 我已经将该字段转换为varchar。我现在需要这样做: 我现在有: 12345678 1234567 我需要这个: 12345678 01234567 将字段更改回数值,并使用以保留零 或 使用 可能: select lpad(column, 8, 0) from table; 编辑回答mylesg的问题,在下面的评论中: 好的,似乎对查询进行了更改-但是如何使它永

我有一个CSV文件以CSV格式发送给我。感兴趣的字段是8位数字。其中一些以0开头。该字段已发送数字。我现在去掉了一些前导零

我已经将该字段转换为varchar。我现在需要这样做:

我现在有:

12345678
1234567
我需要这个:

12345678
01234567

将字段更改回数值,并使用以保留零

使用

可能:

select lpad(column, 8, 0) from table;

编辑回答mylesg的问题,在下面的评论中:


好的,似乎对查询进行了更改-但是如何使它永久地保留(更改)在表中?我尝试了更新而不是选择

我假设您使用的查询类似于:

UPDATE table SET columnName=lpad(nums,8,0);
如果这是成功的,但是表的值仍然没有前导零,那么我建议您可能将列设置为数字类型?如果是这种情况,则需要更改表,使列为text/varchar()类型,以保留前导零:

第一:

ALTER TABLE `table` CHANGE `numberColumn` `numberColumn` CHAR(8);
其次,运行更新:

UPDATE table SET `numberColumn`=LPAD(`numberColum`, 8, '0');
因此,这应该保留前导零;缺点是该列不再严格属于数字类型;因此,您可能必须执行更严格的验证(取决于您的用例),以确保该列中没有输入非数字

参考资料:


我在将电话号码数据从excel导入mysql数据库时遇到了类似的问题。因此,一个不需要识别电话号码长度的简单技巧(因为我的数据中电话号码的长度不同):


我刚刚在
电话号码前面加了0

前面使用
LPAD()的回答是最佳的。但是,如果您想进行特殊或高级处理,这里有一种方法允许对填充进行更多的迭代控制。也可作为使用其他构造实现相同目标的示例

UPDATE
    mytable
SET
    mycolumn = CONCAT(
        REPEAT(
            "0",
            8 - LENGTH(mycolumn)
        ),
        mycolumn
    )
WHERE
    LENGTH(mycolumn) < 8;
更新
空白表
设置
菌柱=CONCAT(
重复(
"0",
8-长度(菌柱)
),
菌柱
)
哪里
长度(菌柱)<8;

ok,似乎对查询进行了更改-但如何使其永久地保留(更改)在表中?我尝试了更新而不是SELECT.no,因为根据设置和字段类型(char),可能会出现错误1406:“数据对于列来说太长…”
UPDATE table SET phone_num = concat('0', phone_num) 
UPDATE
    mytable
SET
    mycolumn = CONCAT(
        REPEAT(
            "0",
            8 - LENGTH(mycolumn)
        ),
        mycolumn
    )
WHERE
    LENGTH(mycolumn) < 8;