SQLSERVER外连接符
表A
tmpA:
id name
00 名字A
01 名字B
02 名字C
03 名字D
04 名字E
tmpB:
id class
02 班级A
06 班级B
在Microsft SQL SERVER Management Studio 中执行这个语句 select tmpA.id, tmpB.class from tmpA,tmpB where tmpB.id=*tmpA.id;就会报这个错【消息 4147,级别 15,状态 1,第 2 行
此查询使用的不是 ANSI 外部联接运算符("*=" 或 "=*")。若要不进行修改即运行此查询,请使用存储过程 sp_dbcmptlevel 将当前数据库的兼容级别设置为 80 或更低。极力建议使用 ANSI 外部联接运算符(LEFT OUTER JOIN、RIGHT OUTER JOIN)重写此查询。在将来的 SQL Server 版本中,即使在向后兼容模式下,也不支持非 ANSI 联接运算符。】
而从java里调用执行,就可以正常执行。 '不明白为什么?'
<SQLSERVER外连接符为'*',而ORACLE为'+'>
select tmpA.id, tmpB.class from tmpA,tmpB where tmpB.id=*tmpA.id;
语句等价于 select tmpA.id, tmpB.class from tmpA LEFT JOIN tmpB on tmpB.id=tmpA.id
输出结果:
id class
00 NULL
01 NULL
02 班级A
03 NULL
04 NULL
//////////////
select tmpA.id, tmpB.class from tmpA RIGHT JOIN tmpB on tmpB.id=tmpA.id
输出结果:
id class
02 班级A
NULL 班级B
//////////////
select tmpA.id, tmpB.class from tmpA FULL JOIN tmpB on tmpB.id=tmpA.id
输出结果:
id class
00 NULL
01 NULL
02 班级A
03 NULL
04 NULL
NULL 班级B
相关文档:
整理一下,关于游标,MSDN有:
过 Transact-SQL 服务器游标检索特定行。
Transact-SQL 语法约定
参数
NEXT
紧跟当前行返回结果行,并且当前行递增为返回行。如果 FETCH NEXT 为对游标的第一次提取操作,则返回结果集中的第一行。NEXT 为默认的游标提取选项。
PRIOR
返回紧邻当前行前面的结果行,并且当前 ......
不得不说的在 MS SQL SERVER 下的 JDBC 调用
今天下午,临时决定要再 MS SQL-SERVER 下配置 Spring 的数据源 DataSource 。但配置了半天,获取数据源仍不成功,我没有办法,找原因呗,只能写个列子测试下。先不管三七二十一,先上正确的例子再说。
看客如果想运行下面的代码,需要自己手工 ......
sqlserver和oracle常用函数对比
数学函数
1.绝对值
S:select abs(-1) value
O:select abs(-1) value from dual
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
3.取整(小)
S:select floor(-1.001) value
O:select floor(-1.0 ......
以超级管理员登录系统,然后执行以下脚本就可以批量修改对象所有者。
sp_configure 'allow updates','1'
go
reconfigure with override
go
update sysobjects set uid=1 where uid<>1
go
sp_configure 'allow updates','0'
go
reconfigure with override ......