将列转换为10位数

时间:2014-06-12 04:14:49

标签: mysql sql sqlite csv

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

例如,

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

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

我想知道是否有一个命令可以轻松地在SQLlite中执行此操作?我不想使用excel来转换列,就像我可以使用sqllite一样,它会更容易和更快。

3 个答案:

答案 0 :(得分:2)

更通用的解决方案是:

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

上述查询将始终返回10位数,并将前导零添加到错过的位数。

例如,上述查询将返回: 0001234567

对于更新,请使用

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

答案 1 :(得分:1)

如果您确定在长度为9的字符串上添加零值将适用于您的应用程序,那么简单的操作就可以了:

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
;

答案 2 :(得分:0)

  1. 使用Excel打开.csv,
  2. 向列添加过滤器
  3. 从A-Z排序以获取所有9位数的列
  4. 然后按照此处的步骤

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