iugo
V2EX  ›  问与答

MySQL 中的手机号码字段用什么类型好? char? int?

  •  
  •   iugo · Oct 21, 2014 · 53081 views
    This topic created in 4255 days ago, the information mentioned may be changed or developed.
    需要根据手机号码查询订单, 看到别人在用 char(11) 来存储手机号码.

    字符串的效率不是应该比数字差吗? 为什么不用 int 来储存?

    不过手机号码的数字就像姓名一样含义应该是字符串的, 只不过长成个数字的外貌.

    对于手机号这种数据来说, 是否 char 是最好的选择?
    15 replies    2014-10-21 21:08:30 +08:00
    wy315700
        1
    wy315700  
       Oct 21, 2014   ❤️ 1
    你存INT以后 还怎么按照开头或者尾号查询
    learnshare
        2
    learnshare  
       Oct 21, 2014
    它就是个字符串,不是数字啊
    HunterPan
        3
    HunterPan  
       Oct 21, 2014
    必须字符串
    staticor
        4
    staticor  
       Oct 21, 2014
    字符串吧 前x位可作区域码 虽然可能用不到
    holyghost
        5
    holyghost  
       Oct 21, 2014
    因为int存不下11位呀
    caixiexin
        6
    caixiexin  
       Oct 21, 2014
    用int的话,万一对这串手机号有特殊操作咋办?比如正则匹配,取号头啥的
    iugo
        7
    iugo  
    OP
       Oct 21, 2014
    @wy315700
    @learnshare 谢谢.
    @HunterPan 谢谢.
    @staticor 谢谢,
    @holyghost
    @caixiexin

    谢谢, 手机号码的本质是字符串, 虽然是纯数字组成的.
    还能实现将来可能的区位查询.
    是的, INT 无法存下手机号, 还要 BIGINT 才行.

    结论: 看来 char 储存手机号是一种符合逻辑, 常用的方法.
    iugo
        8
    iugo  
    OP
       Oct 21, 2014
    @wy315700 谢谢.
    @holyghost 谢谢.
    @caixiexin 谢谢.
    不好意思, 本来上帖要修改为一并感谢的, 没写好.
    jasontse
        9
    jasontse  
       Oct 21, 2014 via iPad
    都存一遍,爱怎么查效率都高。
    zhujinliang
        10
    zhujinliang  
       Oct 21, 2014 via iPhone   ❤️ 1
    话说身份证号为什么会有个x,就是怕程序员存成整数型
    learnshare
        11
    learnshare  
       Oct 21, 2014
    @zhujinliang 整数型也太长了...
    caixiexin
        12
    caixiexin  
       Oct 21, 2014
    另外,如果确定是11位的可以用char,要是长度,格式不确定,比如带+86格式的手机号什么的,用varchar,长度设长一点,拓展性更好。
    gDD
        13
    gDD  
       Oct 21, 2014 via iPhone
    @zhujinliang 看不出来时开玩笑,最后一位是校验位,用X是逼不得已的…
    wy315700
        14
    wy315700  
       Oct 21, 2014
    @zhujinliang

    1。那个是罗马字母X,也就是10,不是因为字母x
    2。为什么会出现X,是因为这一位是前面17位运算以后除以11得出来的校验值。
    oott123
        15
    oott123  
       Oct 21, 2014 via Android
    @gDD 也不算迫不得已吧,毕竟对9取余就行了…
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1285 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 56ms · UTC 17:27 · PVG 01:27 · LAX 10:27 · JFK 13:27
    ♥ Do have faith in what you're doing.