精品技术论坛

精品技术论坛 (https://bbs.et8.net/bbs/index.php)
-   『软件使用』 (https://bbs.et8.net/bbs/forumdisplay.php?f=17)
-   -   Sql / Sqlite场景下_简单字串匹配位置函数使用 + CSV保存及转码为UTF8的注意事项 (https://bbs.et8.net/bbs/showthread.php?t=1362898)

nh_wzg 2018-09-13 21:21:39

Sql / Sqlite场景下_简单字串匹配位置函数使用 + CSV保存及转码为UTF8的注意事项
 
【环境】MS SQL Server / Sqlite下面
表1结构及样例如下:
代码:

ID,长名称,简称
1,沃尔玛深国投,沃尔
2,青岛环宇,环宇
3,很长名称五金店,长名

表2,表3结构与表1结构类似,仅仅是没有【简称】字段,记录的内容有相似性。
样例:
代码:

ID,长名称
1,很长名称五金店
2,长安汽车
3,青岛环宇A
4,湖南环宇B

但因为提交回来的地点不一致,录入人员不一,导致直接用【表1】【表2】【表3】的【长名称】字段进行等值匹配后,结果是不完整的。

【问题】
想利用【表1】的【简称】字段内容,分别与【表1】【表2】进行模糊匹配,表1,表2的结果同时并列,输出后,再用手工确认对应的关系。

希望得到的结果:
代码:

T1_ID,T1_长名称,T1_简称,T2_ID,T2_长名称
2,青岛环宇,环宇,3,青岛环宇A
2,青岛环宇,环宇,4,湖南环宇B
3,很长名称五金店,长名,1,很长名称五金店

然后通过手工对上面的输出结果第2行进行确认识别,然后删除。

BTW:
使用Sqlite时,导入的CSV文件内容含有中文时,要求为UTF-8编码,现在操作流程:
1)Excel / Wps_ET 》F12另存为CSV格式文件,
2)再用工具软件(比如NotePad)打开,另存时,再选定编码为UTF-8的方式来转换,

有没有图形界面的的工具,直接拉原生的CSV文件上去,然后直接输出默认文件名称格式、编码为UTF-8的CSV文件,供导入之用 ?

Cye3s 2018-09-14 13:28:57

select * from t1 , t2 where instr(t2.longname,t1.shortname)>0?

转编码找个win下的命令行版iconv不就行了

nh_wzg 2018-09-14 14:37:57

1 个附件
引用:

作者: Cye3s (文章 17225750)
select * from t1 , t2 where instr(t2.longname,t1.shortname)>0?

转编码找个win下的命令行版iconv不就行了

1、谢谢指点,有经验朋友的指点就是时间,就是金钱,就是效率啊:D

Sqlite instr() 函数在Sqlite 3.7.15后的版本可用。

原来一直在like %%模糊匹配中转圈(虽然最终发现也是可行的),但instr()的函数执行走索引,要比like的效率高(在测试样例中780左右的记录就有5倍的差别)。
有空要阅读_https://www.sqlite.org/lang_corefunc.html

2、GBK 转 UTF-8 的小工具,可用Encode_V1.3,绿色小巧,满足要求。

另外还有一个国际版本的转码工具:EncodeAnt V1.2.1 _http://www.laurenceanthony.net/software/encodeant/
_http://www.laurenceanthony.net/software/encodeant/releases/EncodeAnt121/EncodeAnt.exe
_http://www.laurenceanthony.net/software/encodeant/releases/EncodeAnt121/EncodeAnt_64bit.exe

另外如果有使用Total Commander的话,用用户定义转码的工具栏按钮的方法更方便。参考https://bbs.et8.net/bbs/showthread.php?t=1363137

3、Excel文件中,选定需要导出部分的数据,C-C,插入新页中,右键“选择性粘贴”,选“仅数值”。》F12导出为CSV格式,可以避免出现大量末尾逗号的问题。


所有时间均为北京时间, 现在的时间是 02:00:30.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号