test.xlsx 文件的工作表 Sheet1 的 A 列的数据
A | B | C |
---|---|---|
0 | ||
1 | ||
2 | ||
3 |
目标:将 A 列的数据拼接成 '0','1','2','3'
1、开始先看你的数据是否得加单引号,如果得加单引号(B列),如果不用加单引号(C列)
A | B | C |
---|---|---|
0 | =“,'”&A1&“',” | =“,”&A1&“,” |
1 | =“,'”&A2&“',” | =“,”&A2&“,” |
2 | =“,'”&A3&“',” | =“,”&A3&“,” |
3 | =“,'”&A4&“',” | =“,”&A4&“,” |
插入函数后就会变成
A | B | C |
---|---|---|
0 | ,‘0’, | ,0, |
1 | ,‘1’, | ,1, |
2 | ,‘2’, | ,2, |
3 | ,‘3’, | ,3, |
2、将 B 列或 C 列复制到 notepad--
里面(notepad++
也一样),这里用 B 列举例
,'0',
,'1',
,'2',
,'3',
3、按 Ctrl + h 快捷键进行替换操作,下面 查找模式
记得 勾选拓展(\n,\r,\t,\0,\x...)
,然后查找目标填 ,\r\n
,替换不用填,然后点击在当前文件中替换(就是全部替换的意思),之后把最前面的逗号去掉就可以了
,'0','1','2','3'
4、我们提取出来的数据(‘0’,‘1’,‘2’,‘3’),写到 in 里面(里面如果查询有重复有必要用 DISTINCT 去重),里面的话正常查询可能会碰到不是按 in 里面的顺序查询出来,可以用下面这种写法,亲测是可以的
SELECT *
FROM (
SELECT DISTINCT field1,field2
FROM table1
WHERE field2 IN ('0','1','2','3')
)tmp
ORDER BY FIELD(field2,'0','1','2','3')
参考一:用EXCEL一列数据拼接SQL的where条件in语句
参考二:【MySQL】查询保持IN中的顺序
一键自动化 下载、安装、激活 Office 的利器
SqlCel 安装
注意:安装完后虽然 WPS 也可以使用 SqlCel,但是极度不推荐,因为我自己在使用连接数据库后打开工作面板是全空的,还有一点最恶心的就是新建查询的时候,SQL是没法复制粘贴删除的,下面是有提示“请在Excel中使用数据查询功能”,所以还是使用 Excel 打开 SqlCel 就没问题
首先是打开 Excel,上面选择 SqlCel,然后点击数据库连接,选择自己对应的数据库,填写信息后进行连接,
连接后点击工作面板,可以看到数据库里面的表,里面的一些操作可以看看视频了解一下 SqlCel培训视频
我们这次用的是 SqlCel 第14点单元格转字符串(RNGTOSTR函数)
点击上面的SQL(新建查询),我们可以用 'rngtostr([Sheet1!A1:A4],'\,',true)'
,然后点击上面开始查询,会出现以下信息
开始运行SQL: 2023/10/7 16:38:08
解析后的SQL: '0','1','2','3'
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''0','1','2','3'' at line 1
用时1.21s
可以看到是拼接出来效果没问题,接下来就是拼接 SQL
SELECT fieldName FROM table1 WHERE fieldName2 IN ('rngtostr([Sheet1!A1:A4],'\,',true)')
相当于
SELECT fieldName FROM table1 WHERE fieldName2 IN ('0','1','2','3')
点击开始查询后,会生成一个叫 QueryTable 的工作表,里面就是查询出来的数据,记住如果需要按顺序查,可以用上面 WPS 的 SQL 方法去操作
参考:如何通过 Excel 查询 MySQL 数据库