本帖最后由 335081548 于 2013-11-3 20:18 编辑
IN运算符在SQL中的应用
In运算符允许 在 WHERE 子句中规定多个值
语法如下:
- Select 字段 From [表名$] Where 字段 In(条件1, 条件2,条件3, ....)
复制代码注: 如果在In的条件中不是数值类型,一定要加上引号。 如本在本例中提取广东、广西 二省的数据 SQL语句如下: - Select * FROM [Sheet1$A:D] where 省份 in('广东','广西')
复制代码 结果如图所示:
假如不使用In语句,将语句将比较长:
- Select * FROM [Sheet1$A:D] where 省份 ='广东'or 省份 ='广西'
复制代码相当于小学中的数学中的简便计算方法 15*25+15*10 =15*(25+10) 比如不大恰当,只是为了方便记忆 。仅纯属娱乐。 从上面可以看出in()是Or的关系。 同样可以配合其他表式使用 例如提取 省份广东、广西 班级三(1)班、三(2)班 成绩大于60分的, 假如要使用VBA语句,将要使用很if进行判断 SQL语句如下: - Select * FROM [Sheet1$A:D] where 省份 In('广东','广西') And 班级 In('三(1)班','三(2)班') And 成绩>60
复制代码没有使用IN语句的SQL语句如下: - Select * FROM [Sheet1$A:D] where (省份 ='广东'or 省份 ='广西') And (班级='三(1)班'or 班级='三(2)班') And 成绩>60
复制代码
完整VBA代码如下:
- Sub Test4()
- Dim Conn As Object, Rst As Object
- Dim strConn As String, strSQL As String
- Dim i As Integer, PathStr As String
- Set Conn = CreateObject("ADODB.Connection")
- Set Rst = CreateObject("ADODB.Recordset")
- PathStr = ThisWorkbook.FullName '设置工作簿的完整路径和名称
- Select Case Application.Version * 1 '设置连接字符串,根据版本创建连接
- Case Is <= 11
- strConn = "Provider=Microsoft.Jet.Oledb.4.0;Extended Properties=excel 8.0;Data source=" & PathStr
- Case Is >= 12
- strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & PathStr & ";Extended Properties=""Excel 12.0;HDR=YES"";"""
- End Select
- Conn.Open strConn '打开数据库链接
- '设置SQL查询语句
- 'strSQL = "Select * FROM [Sheet1$A:D] where 省份 in('广东','广西') "
- 'strSQL = "Select * FROM [Sheet1$A:D] where 省份 ='广东'or 省份 ='广西'"
- 'strSQL = "Select * FROM [Sheet1$A:D] where 省份 In('广东','广西') And 班级 In('三(1)班','三(2)班') And 成绩>60 "
- strSQL = "Select * FROM [Sheet1$A:D] where (省份 ='广东'or 省份 ='广西') And (班级='三(1)班'or 班级='三(2)班') And 成绩>60 "
- Set Rst = Conn.Execute(strSQL) '执行查询,并将结果输出到记录集对象
- With Sheet1.Range("F:I")
- .Cells.Clear
- For i = 0 To Rst.Fields.Count - 1 '填写标题
- .Cells(1, i + 1) = Rst.Fields(i).Name
- Next i
- .Range("A2").CopyFromRecordset Rst
- .Cells.EntireColumn.AutoFit '自动调整列宽
- End With
- Rst.Close '关闭数据库连接
- Conn.Close
- Set Conn = Nothing
- Set Rst = Nothing
- End Sub
复制代码
|