SQL 中的 LIKE 运算符对于我的 Access 数据库 returns ASP CLASSIC 中没有值,而如果直接在 Access 中复制查询则它有
LIKE operator in SQL for my Access Database returns no values in ASP CLASSIC while it does if the query gets copied directly in Access
所以正如标题所说,我正在尝试 运行 我的 ASP 经典页面中的查询,但由于某种原因它没有 return 记录集如果直接在 Access 中复制查询,return 是否设置了一条记录。
有一件事可能出错,即:
- 查询在
NUMERIC value
上使用 LIKE operator
。
显然 like
运算符只能用于 STRING
值,所以我尝试使用 CStr
将 numeric
值转换为 string
,这没有效果。然后我尝试在查询中硬编码一个值,在 Access 中这个 does 似乎有效(即使我在 string
上使用 LIKE
运算符查找 numeric
值 - 它适用于 Access)。
我的代码如下:
Set keywords_cmd = Server.CreateObject ("ADODB.Command")
Set keywords_cmd.ActiveConnection = con
sql = "SELECT Description, MyNumber FROM Orders where MyNumber LIKE '*23*' "
keywords_cmd.CommandText = sql
Set keywords = keywords_cmd.Execute(sql)
if keywords.EOF then
response.write("EOF???")
end if
Do While Not keywords.EOF
response.write("A record")
%><br> <%
keywords.movenext
Loop
将 SQL 命令直接粘贴到 Access 中时,它会生成 6 条包含 23 数字的记录。尽管在 ASP 文件中执行完全相同的操作时,它会生成 0 条记录 (EOF = true)。
我还检查了我与数据库的连接,方法是将 SQL 命令调整为:
sql = "SELECT Description, MyNumber FROM Orders where MyNumber = 1506 "
这会在 ASP 文件中生成记录,以便连接正常。
那么问题来了:为什么直接在Access中使用完全相同的查询却没有生成记录?
提醒一下:MyNumber
列在数据库中属于 NUMERIC
类型。
一些附加信息:Access 数据库是 mdb file
(较旧的 Access),也许这也与它有关?
使用字符串函数 Str(number)
sql = "SELECT Description, MyNumber FROM Orders where Str(MyNumber) LIKE '*23*' "
我自己想出来了。似乎我只需要用 %
通配符替换 *
通配符。这成功了..
在 "LIKE" 通配符比较中使用 %
:
"SELECT Description, MyNumber FROM Orders where MyNumber LIKE '%23%'"
所以正如标题所说,我正在尝试 运行 我的 ASP 经典页面中的查询,但由于某种原因它没有 return 记录集如果直接在 Access 中复制查询,return 是否设置了一条记录。
有一件事可能出错,即:
- 查询在
NUMERIC value
上使用LIKE operator
。
显然 like
运算符只能用于 STRING
值,所以我尝试使用 CStr
将 numeric
值转换为 string
,这没有效果。然后我尝试在查询中硬编码一个值,在 Access 中这个 does 似乎有效(即使我在 string
上使用 LIKE
运算符查找 numeric
值 - 它适用于 Access)。
我的代码如下:
Set keywords_cmd = Server.CreateObject ("ADODB.Command")
Set keywords_cmd.ActiveConnection = con
sql = "SELECT Description, MyNumber FROM Orders where MyNumber LIKE '*23*' "
keywords_cmd.CommandText = sql
Set keywords = keywords_cmd.Execute(sql)
if keywords.EOF then
response.write("EOF???")
end if
Do While Not keywords.EOF
response.write("A record")
%><br> <%
keywords.movenext
Loop
将 SQL 命令直接粘贴到 Access 中时,它会生成 6 条包含 23 数字的记录。尽管在 ASP 文件中执行完全相同的操作时,它会生成 0 条记录 (EOF = true)。
我还检查了我与数据库的连接,方法是将 SQL 命令调整为:
sql = "SELECT Description, MyNumber FROM Orders where MyNumber = 1506 "
这会在 ASP 文件中生成记录,以便连接正常。
那么问题来了:为什么直接在Access中使用完全相同的查询却没有生成记录?
提醒一下:MyNumber
列在数据库中属于 NUMERIC
类型。
一些附加信息:Access 数据库是 mdb file
(较旧的 Access),也许这也与它有关?
使用字符串函数 Str(number)
sql = "SELECT Description, MyNumber FROM Orders where Str(MyNumber) LIKE '*23*' "
我自己想出来了。似乎我只需要用 %
通配符替换 *
通配符。这成功了..
在 "LIKE" 通配符比较中使用 %
:
"SELECT Description, MyNumber FROM Orders where MyNumber LIKE '%23%'"