V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
veike
V2EX  ›  程序员

数据库给自增 id 前加 00000000 也能正常查询,这种情况何解?发现 V 站也是这样

  •  
  •   veike · 2020-11-11 00:21:12 +08:00 · 2630 次点击
    这是一个创建于 1464 天前的主题,其中的信息可能已经有所发展或是发生改变。
    13 条回复    2020-11-11 13:27:41 +08:00
    veike
        1
    veike  
    OP
       2020-11-11 00:21:49 +08:00
    fangcan
        2
    fangcan  
       2020-11-11 00:23:34 +08:00
    应该是直接被转了吧
    veike
        3
    veike  
    OP
       2020-11-11 00:26:57 +08:00
    @fangcan 不转直接在数据库也能查询。
    xiangyuecn
        4
    xiangyuecn  
       2020-11-11 00:27:48 +08:00
    够骚的,数据库全用字符串可解😂 几乎所有语言都是将前面的 0 丢弃转成 10 进制,包括 sql,"000123"==123,"000123"!="123",迟早要脑瘫
    veike
        5
    veike  
    OP
       2020-11-11 00:30:12 +08:00
    @xiangyuecn 发现在数据库使用不带引号的还是当做 int 来处理,只有加引号才正常。
    zealic
        6
    zealic  
       2020-11-11 00:32:16 +08:00
    Number.parseInt("000000123") = 123

    所有语言都一样
    CEBBCAT
        7
    CEBBCAT  
       2020-11-11 00:35:39 +08:00 via Android
    数据库那边,应该和填充 0 这个概念有关系吧,编程语言不知道
    cheng6563
        8
    cheng6563  
       2020-11-11 01:12:44 +08:00
    编程语言首先会经历一次 string 转 int 吧,这个时候把前面的 0 给干掉了吧
    aqqwiyth
        9
    aqqwiyth  
       2020-11-11 01:52:45 +08:00
    反反爬虫的好思路之一, 如果根据 url path 来的话
    freakxx
        10
    freakxx  
       2020-11-11 02:06:28 +08:00
    @aqqwiyth #9

    这个思路确实很好玩,类似在 key 做混淆
    但是感觉还是容易被针对,跟着写一个转换就可以
    lxk11153
        11
    lxk11153  
       2020-11-11 10:24:48 +08:00
    何解? 意思是不想让它查出来?那用字符串比较呗
    select * from table where CONVERT(id, CHAR) = 传入字符串
    ytmsdy
        12
    ytmsdy  
       2020-11-11 12:33:54 +08:00
    可能是为了防止 SQL 注入,把参数就固定成了 Int,接收到 String 参数以后的第一件事情就是转换成 Int 。
    opengps
        13
    opengps  
       2020-11-11 13:27:41 +08:00
    因为 id 是数字,正式执行查询的时候,被强制转化了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5010 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 03:57 · PVG 11:57 · LAX 19:57 · JFK 22:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.