从一个错误提示引出SQL中in和or的问题。
2008-09-12 10:45
316 查看
希望大家帮忙解决下。。
环境是 SQL Server 2000
例子表
create table [table1]
(
a int identity,
b int
)
再一次调试SQL语句事有如下查询操作
select [a],[b] from [table1] where [aa] in (1,2,3)
显然, 字段aa是不存在的,所以会报错
服务器: 消息 207,级别 16,状态 3,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
然后我觉得很奇怪,就又添加了两个数字
select [a],[b] from [table1] where [aa] in (1,2,3,4,5)
报错信息如下
服务器: 消息 207,级别 16,状态 3,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
后来又用同样的数据测试了or的错误信息
select [a],[b] from [table1] where [aa]=1 or [aa]=1 or [aa]=2 or [aa]=3 or [aa]=4 or [aa]=5)
第一次报错
服务器: 消息 207,级别 16,状态 3,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
第二次报错
服务器: 消息 207,级别 16,状态 3,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
很不解,为什么in和or所报错误一点不差呢?
而且in为什么不在第一次报错后终止执行?
难道in和or在内部处理时候是一样的?
希望大家讨论下
环境是 SQL Server 2000
例子表
create table [table1]
(
a int identity,
b int
)
再一次调试SQL语句事有如下查询操作
select [a],[b] from [table1] where [aa] in (1,2,3)
显然, 字段aa是不存在的,所以会报错
服务器: 消息 207,级别 16,状态 3,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
然后我觉得很奇怪,就又添加了两个数字
select [a],[b] from [table1] where [aa] in (1,2,3,4,5)
报错信息如下
服务器: 消息 207,级别 16,状态 3,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
后来又用同样的数据测试了or的错误信息
select [a],[b] from [table1] where [aa]=1 or [aa]=1 or [aa]=2 or [aa]=3 or [aa]=4 or [aa]=5)
第一次报错
服务器: 消息 207,级别 16,状态 3,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
第二次报错
服务器: 消息 207,级别 16,状态 3,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
服务器: 消息 207,级别 16,状态 1,行 1
列名 'aa' 无效。
很不解,为什么in和or所报错误一点不差呢?
而且in为什么不在第一次报错后终止执行?
难道in和or在内部处理时候是一样的?
希望大家讨论下
相关文章推荐
- java.sql.SQLException:Unknown column 'admin' in 'where clause'错误问题
- 错误码: 1418 This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and
- 在Ubuntu16.04里面安装 pycurl 提示错误的问题:gnutls.h: No such file or directory 的解决方案
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
- 问题分享:最近测试VDI-in-a-Box使用AD做身份验证出现以下错误提示:
- 【安卓学习之常见问题】 strings.xml 提示 The entity name must immediately follow the '&' in the entity referen 错误
- [解决问题][不能更新eclipse]错误提示:Error retrieving "feature.xml". [error in opening zip file]
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
- 执行sqlplus提示SP2-1503错误的问题解决
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
- Eclipse问题:Workspace in use or cannot be created, choose a different one.--错误解决办法
- vs2010 遇 “堆损坏”问题: 无编译错误,提示:Windows has triggered a breakpoint in **.exe....
- robotframework中执行sql提示错误的问题
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
- Oracle数据库登录错误提示提示ora 01033:oracle initialization or shutdown in progress,oracle11g
- sql server delete from tablename a 提示a附近有语法错误的问题
- ora-01033:oracle initializationg or shutdown in progress 错误提示解决方法
- This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法