V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Archangell
V2EX  ›  问与答

旁边老哥问我为什么手机号不用 int

  •  
  •   Archangell · Mar 26, 2019 · 5803 views
    This topic created in 2593 days ago, the information mentioned may be changed or developed.

    数据库设计 phone 是 varchar 型 他问我为什么不是 int 型

    34 replies    2019-03-26 22:24:51 +08:00
    MaxTan
        1
    MaxTan  
       Mar 26, 2019
    你跟他说不够用
    learnshare
        2
    learnshare  
       Mar 26, 2019   ❤️ 1
    国家代码怎么存
    Vegetable
        3
    Vegetable  
       Mar 26, 2019   ❤️ 2
    千言万语化作一句老子乐意
    newtype0092
        4
    newtype0092  
       Mar 26, 2019
    我前不久才干过这个沙雕事情。。。存的手机号入库就变了,后来才想起来位数不够。。。
    prolic
        5
    prolic  
       Mar 26, 2019
    电话号码包括+-的
    helionzzz
        6
    helionzzz  
       Mar 26, 2019   ❤️ 3
    你就问他老子为什么要写道德经
    icew4y
        7
    icew4y  
       Mar 26, 2019 via iPhone
    你的同事这种问,表示他经验不足
    ccoming
        8
    ccoming  
       Mar 26, 2019   ❤️ 4
    我的理解:对于能加减的数字串(日期、时、金额),才用数值型的。不能加减的(订单号、手机号、身份号),都用文本型。
    dallaslu
        9
    dallaslu  
       Mar 26, 2019
    大家大业的还差这点数据库空间
    Flasky
        10
    Flasky  
       Mar 26, 2019 via Android   ❤️ 1
    存手机号至少也要 long long 啊,但是如果是座机这些 0 开头的你怎么存?
    Lin0936
        11
    Lin0936  
       Mar 26, 2019
    你问他为什么不用 byte
    Archangell
        12
    Archangell  
    OP
       Mar 26, 2019   ❤️ 3
    那老哥看了大家回复表示明白了
    PP
        13
    PP  
       Mar 26, 2019 via iPad   ❤️ 9
    加班后楼主被老哥毒打一顿,“害我丢脸!”
    MeteorCat
        14
    MeteorCat  
       Mar 26, 2019 via Android
    +86 +0754
    WordTian
        15
    WordTian  
       Mar 26, 2019 via Android
    哈哈,int 好像最多存到 24 亿左右吧,11 位的电话号码是真存不了
    Archangell
        16
    Archangell  
    OP
       Mar 26, 2019
    @PP 不会 他表示感谢 涨姿势
    shiny
        17
    shiny  
    PRO
       Mar 26, 2019
    让我想起年少无知时,把 ip2long 的地址存成 unsigned int 的那个下午
    orangeade
        18
    orangeade  
       Mar 26, 2019 via Android
    @learnshare 微博貌似是两部分,+号换成 0
    mogita
        19
    mogita  
       Mar 26, 2019
    1-800-MY-APPLE 苹果客服电话了解一下
    v2mm
        20
    v2mm  
       Mar 26, 2019
    @shiny ip2long 存成 unsigned int 感觉没啥问题啊,省空间,作为 key 比较时效率还高
    pinews
        21
    pinews  
       Mar 26, 2019
    用 int 是自己为难自己,
    GGGG430
        22
    GGGG430  
       Mar 26, 2019 via iPhone
    你跟他说我要查询 138 开头的手机号有哪些,int 怎么查?
    co3site
        23
    co3site  
       Mar 26, 2019 via Android
    当然是给他介绍 longlong 啊
    shiny
        24
    shiny  
    PRO
       Mar 26, 2019
    @v2mm 当前我也是这么想的,但当年 32 位系统还是很流行的,ip2long 会出现负值,然后插入失败。如果恰好又不重视错误信息的捕获,这条记录就很可能永远丢失了。
    shiny
        25
    shiny  
    PRO
       Mar 26, 2019
    @v2mm 而我恰好都遇到了,更巧的是每条记录起码值个千把块钱。
    AlisaDestiny
        26
    AlisaDestiny  
       Mar 26, 2019
    @GGGG430
    select * from user where floor(phone/100000000) = 138; 哈哈哈
    opengps
        27
    opengps  
       Mar 26, 2019
    我替你回答他 666
    huangdayu
        28
    huangdayu  
       Mar 26, 2019 via Android
    +86 1.........
    msg7086
        29
    msg7086  
       Mar 26, 2019
    主要是因为电话号码不是一个数值,所以不能当作数值来存储。和位数都没有关系。

    021 10086 这个号码你用 int 怎么存。
    lxy
        30
    lxy  
       Mar 26, 2019
    说到 IP,当时以为 unsigned int 够用,结果还有 IPv6...
    dreamwar
        31
    dreamwar  
       Mar 26, 2019   ❤️ 1
    晚上回去后楼主被边上老哥压在身下,一边...一边问:“你今天为什么要上 V 站发这个贴,嫌我不够丢人吗?”
    ob
        32
    ob  
       Mar 26, 2019 via Android
    @AlisaDestiny >1380000...<1390000
    Osk
        33
    Osk  
       Mar 26, 2019 via Android   ❤️ 1
    excel 让我明白很多看起来像数字的实际上不能用数字类型😂
    mingyun
        34
    mingyun  
       Mar 26, 2019
    #8 楼没毛病
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2505 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 08:14 · PVG 16:14 · LAX 01:14 · JFK 04:14
    ♥ Do have faith in what you're doing.