sql 手写字符串匹配规则

2016-12-24 14:52:31 +08:00
 ebony0319

有一批手写的款号。需要在我们系统里转换为产品的 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 长度不知道为什么就是要多一位。我也不知道疏漏了什么环节,

987 次点击
所在节点    数据库
5 条回复
ArthurKing
2016-12-24 15:22:37 +08:00
3.字符都转换为 varchar ( 20 ),还是不行。

转换后是否删除末尾空格?
RE
2016-12-24 15:24:39 +08:00
确定不是 sql 写错了么……
T.sku = T.productno ?
join product P ?
ArthurKing
2016-12-24 15:26:16 +08:00
把表里的数据拿到支持 16 进制显示的编辑器中看看是否有不可见字符? rtrim 之类的函数只能去除半角空格
ebony0319
2016-12-24 15:54:44 +08:00
@ArthurKing 确实,有一个隐藏的尾巴,但是肉眼是看不出来的。
mingyun
2016-12-25 09:57:03 +08:00
@ArthurKing 果然老司机

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/329881

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX