【问题标题】:Transforming a column to have 10 Digits将一列转换为 10 位数字
【发布时间】:2014-06-12 04:14:49
【问题描述】:

我有一个包含电话号码的 csv 文件,其中一些有 9 位数字,其中一些有 10 个数字。是否有一个命令可以转换列,使得只有 9 位数字的数字将具有 0附在数字前面。

例如,

如果列有值“443332332”和“0441223332”,我想将9位数字的值更改为“0443332332”?

对不起,我应该详细说明。

我想知道是否有一个命令可以在 SQLlite 中轻松完成?我不喜欢使用 excel 来转换列,好像我可以让它与 sqllite 一起使用它会更容易和更快。

【问题讨论】:

  • 列的数据类型是什么?
  • 这个问题是关于 CSV 文件的,为什么它被标记为 MySQL 和 SQLite?

标签: mysql sql sqlite csv


【解决方案1】:

更通用的解决方案是:

select substr('0000000000'||'1234567', -10, 10) from table_name;

上述查询将始终返回 10 位数字,并在丢失的数字位数上添加前导零。

例如,上面的查询将返回:0001234567

对于更新,使用

UPDATE TABLE_NAME SET PHONE_NO = substr('0000000000'|| PHONE_NO, -10, 10);

【讨论】:

    【解决方案2】:

    如果您确定只需在长度为 9 的字符串上添加一个 0 即可适用于您的应用程序,那么简单的方法就可以了:

    SELECT CASE WHEN LENGTH(phone_number) = 9 THEN '0'||phone_number
                ELSE phone_number
            END AS phone_number
      FROM your_table
    ;
    

    您还可以根据需要更新表格:

    UPDATE your_table
       SET phone_number = '0'||phone_number
     WHERE LENGTH(phone_number) = 9
    ;
    

    【讨论】:

      【解决方案3】:
      1. 使用 Excel 打开 .csv,
      2. 为列添加过滤器,
      3. 从A-Z排序得到所有9位数字的列,

      然后按照这里的步骤操作

      http://office.microsoft.com/en-au/excel-help/keep-leading-zeros-in-number-codes-HA010342581.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-10
        • 1970-01-01
        相关资源
        最近更新 更多