我正在为学校学习一些经典的 ASP,并且正在从程序中进行选择。我使用 WHERE 子句按名称过滤结果(称为 CIUDAD),我使用 LIKE 比较它,但它返回一个错误,这个:
Error: Dynamic SQL Error SQL error code = -206 Column unknown At line 1,第 41 栏。
我正在执行的选择是这样的:
SELECT * FROM LISTA_VUELOS_PRECIO WHERE CIUDAD_ORIGEN LIKE "%" AND CIUDAD_DESTINO LIKE "%"
如果我在 Firebird 的 SQL 编辑器上启动这个选择,它会工作,但如果我通过与 ASP 的连接启动它,它会失败。
这是代码:
sentenciaSQL = "SELECT * FROM LISTA_VUELOS_PRECIO WHERE CIUDAD_ORIGEN LIKE """ & nombre_ciudad_origen & """ AND CIUDAD_DESTINO LIKE """ & nombre_ciudad_destino & """"
response.write(sentenciaSQL & "<br>")
Set vuelos = Conexion.execute(sentenciaSQL)
if Err.Description <>"" then
Response.Write("Error: " & Err.Description & "<br/>")
end if
Conexion 对象有效,因为我将它与其他正常工作的选择一起使用,并且 where 子句中使用的变量具有正确的值。
我在这里放了关于在 Firebird 上启动的选择的图片。
我试着在网上搜索错误,把de LIKE改成“=”,但是没有用。
在标准SQL查询中,必须用单引号将所有字符串值括起来。
因此,您正确编写的查询是:
SELECT * FROM LISTA_VUELOS_PRECIO WHERE CIUDAD_ORIGEN LIKE '%madri%' AND CIUDAD_DESTINO LIKE '%arcelon%'
然后是生成它的 ASP 代码:
sentenciaSQL = "SELECT * FROM LISTA_VUELOS_PRECIO WHERE CIUDAD_ORIGEN LIKE '%" & nombre_ciudad_origen & "%' AND CIUDAD_DESTINO LIKE '%" & nombre_ciudad_destino & "%'"
请注意,ASP 是一种服务器端语言,浏览器在这里无关紧要。这是一个纯粹的 DBMS SQL 错误,不是 ASP 错误,也不是浏览器错误。