V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ebony0319
V2EX  ›  数据库

sql 手写字符串匹配规则

  •  
  •   ebony0319 · 2016-12-24 14:52:31 +08:00 · 869 次点击
    这是一个创建于 2681 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有一批手写的款号。需要在我们系统里转换为产品的 ID 。事情本来很简单。比如给的是:"XL06-1692T " ,我只要去数据库产品表匹配“ XL06-1692T ”,然后给 ID : 123456.我简化一下。

    select T.sku,P.ID  from Table T left outer join product P on T.sku=T.productno
    

    结果匹配不上。

    我做的几次尝试:

    1.两边字符串去空格重新匹配。不行。

    2.两边都用相同的字符集。有人说等宽字节导致的,还有大小写导致的。转换后还是不行。

    3.字符都转换为 varchar ( 20 ),还是不行。

    4.在 excel (数据库里面的数据太大了,我只选择两个相同的在 excel 测试一下)看是否可以匹配,还是不行。

    5.现在唯一可以的就是:

    select T.sku,P.ID  from Table T left outer join product P on T.sku like T.productno+'_'
    

    顾客的 len 长度不知道为什么就是要多一位。我也不知道疏漏了什么环节,

    5 条回复    2016-12-25 09:57:03 +08:00
    ArthurKing
        1
    ArthurKing  
       2016-12-24 15:22:37 +08:00
    3.字符都转换为 varchar ( 20 ),还是不行。

    转换后是否删除末尾空格?
    RE
        2
    RE  
       2016-12-24 15:24:39 +08:00
    确定不是 sql 写错了么……
    T.sku = T.productno ?
    join product P ?
    ArthurKing
        3
    ArthurKing  
       2016-12-24 15:26:16 +08:00   ❤️ 1
    把表里的数据拿到支持 16 进制显示的编辑器中看看是否有不可见字符? rtrim 之类的函数只能去除半角空格
    ebony0319
        4
    ebony0319  
    OP
       2016-12-24 15:54:44 +08:00
    @ArthurKing 确实,有一个隐藏的尾巴,但是肉眼是看不出来的。
    mingyun
        5
    mingyun  
       2016-12-25 09:57:03 +08:00
    @ArthurKing 果然老司机
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3015 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:08 · PVG 08:08 · LAX 17:08 · JFK 20:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.