今天聊一下SQL语句中的Excel表。
1.区域成表
Excel工作表和数据库的数据表有很多不同之处,最显著的地方在于,数据库的数据表可以理解为由行列构成,而Excel工作表则是由一个又一个单元格构成,且这些单元格拥有独特的地址表述方法,也就是A1或R1C1,它们还可以构成数据相连的单元格区域,例如A2:H8。
那么问题来了,如果我们只需要计算某张Excel工作表的部分区域的话,SQL该怎么表述呢?
这种问题是很常见的。
比如,很多人的Excel标题行并不是处于表格的第一行,而是第2行……
如下图所示▼
此时,我们希望计算A2:F列的单元格区域,这样我们更容易使用字段名处理数据,而不是整张Excel工作表……
再比如,一张表里存在两个或更多个“表”……这句话什么意思呢?
见下图▼
图中所示的表格中,既存在一份“教师表”,又存在一份“学生表”;如果我们只希望SQL引用计算A2:D8的教师表数据……
……Excel中的SQL其实是支持将工作表的单元格区域作为“表”使用的。
上图所示的问题,SQL可以写成:SELECT 姓名,学科 FROM [数据表$A2:D8]
查询结果如下:
而第1种情况,我们知道数据开始于A2单元格,但不知道结束于F列的哪个单元格,SQL可以写成:
SELECT 姓名,爱好 FROM [学生表$A2:F]
另外,如果我们需要SQL引用计算表格D:G整列的数据,SQL可以写成:SELECT * FROM [学生表$D:G]
总结以上几种Excel工作表区域的表述方式,也就是,工作表名称+美金符号$+相对引用状态下的单元格地址,最后使用中括号包起来。
就酱紫。