gpt4 book ai didi

sql-server - VBA - SQL 查询字符串

转载 作者:行者123 更新时间:2023-12-04 21:53:41 24 4
gpt4 key购买 nike

我已经声明了存储 SQL 表中列名称的变量以及存储其相应“要查找的值”的变量。

Dim sColumn1 As String
Dim sColumn2 As String
Dim sColumn3 As String
Dim sValue1 As String
Dim sValue2 As String
Dim sValue3 As String

sColumn1 = Sheets(1).Range("A1").Value
sColumn2 = Sheets(1).Range("B1").Value
sColumn3 = Sheets(1).Range("C1").Value
sValue1 = Sheets(1).Range("A2").Value
sValue2 = Sheets(1).Range("B2").Value
sValue3 = Sheets(1).Range("C2").Value

我想进行这样的动态查询:

StrQuery = "SELECT * FROM dbo.Table1 WHERE ('" & sColumn1 & "') LIKE ('" & sValue1 & "') AND ('" & sColumn2 & "') LIKE ('" & sValue2 & "') AND ('" & sColumn3 & "') LIKE ('" & sValue3 & "')"

此代码不会产生任何错误,但它也不会提取任何记录。我已经确认并且所有变量都被分配了正确的值。

如果我将列变量替换为 SQL 表中的实际列名,则上面的查询可以正常工作。像这样:

StrQuery = "SELECT * FROM dbo.Table1 WHERE Column1 LIKE ('" & sValue & "') AND Column2 LIKE ('" & sValue2 & "') AND Column3 LIKE ('" & sValue3 & "')"

使用此字符串,我可以毫无问题地得到结果,但列将是动态的。用户将从 15 列中进行选择。

为什么当我使用变量时,即使我知道变量的值与 SQL 表中列的名称完全匹配,它也不起作用?

我是否在字符串中使用了错误的格式,以便读取存储在变量中的实际值?

最佳答案

上面关于使用参数化查询的警告仍然适用,但这就是你如何让它工作的方法:

StrQuery = "SELECT * FROM dbo.Table1 WHERE " & _
sColumn1 & " LIKE ('%" & sValue & "%')" & _
" AND " & sColumn2 & " LIKE ('%" & sValue2 & "%')" & _
" AND " & sColumn3 & " LIKE ('%" & sValue3 & "%')"

关于sql-server - VBA - SQL 查询字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49055613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com