我有一個 Excel 表格,我想用它來通過 SQL 獲取一些度量。
這是我的代碼的第一部分,它作業正常:
Option Explicit
Sub MySQL()
Dim cn As Object, rs As Object, output As String, sql As String
Set cn = CreateObject("ADODB.Connection")
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & ";" & _
"Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
.Open
End With
現在我可以獲得具有特定條件的條目數量,例如:
sql = "SELECT COUNT(ID) FROM [Data$] WHERE [Type] = ""myType"" and [Status] = ""myStatus"""
Set rs = cn.Execute(sql)
MsgBox (rs(0))
現在我想使用CONTAINS條件,但這不起作用:
sql = "SELECT COUNT(ID) FROM [Data$] WHERE CONTAINS([Type], ""T"")"
Set rs = cn.Execute(sql)
MsgBox (rs(0))
uj5u.com熱心網友回復:
Contains是 SQL Server 中可用的非標準 SQL 函式(請參閱https://docs.microsoft.com/en-us/sql/t-sql/queries/contains-transact-sql?view=sql-server-ver15)。它用于執行各種模糊搜索。
Contains 查詢其他資料源(Excel、Access、Oracle...)時不可用。
如果您只是查找子字串,則可以使用like-operator 并%用作通配符,例如
sql = "SELECT COUNT(ID) FROM [Data$] WHERE [Type] like '%T%' "
'%T%'將查找包含字母 T 的
'T%'任何內容 查找以字母 T 開頭的任何內容 查找以字母 T
'%T'結尾的任何內容
(當然,這不僅限于單個字符,您可以'%overflow%'根據需要使用)。
請注意,不同的資料庫系統對區分大小寫有不同的規則。查詢Excel是不區分大小寫,所以like %t%并like %T%回傳相同的結果。這與其他資料庫不同。
順便說一句,您應該養成在 SQL 陳述句中對常量文本使用單引號的習慣。雙引號在 Excel 中有效,但不是 SQL 標準,在大多數資料庫中都會失敗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/353893.html
下一篇:具有間接關系的SQL連接條目
