此查询使用的不是 ANSI 外部联接运算符

本文解决了一个特定的SQLServerException问题,即使用了非ANSI标准的外部联接运算符(*= 或 *=)。介绍了如何通过调整数据库兼容级别或重写查询来解决此问题,并提供了具体的SQL语句示例。
摘要由CSDN通过智能技术生成
com.microsoft.sqlserver.jdbc.SQLServerException: 此查询使用的不是 ANSI 外部联接运算符("*=" 或 "=*")。若要不进行修改即运行此查询,请使用存储过程 sp_dbcmptlevel 将当前数据库的兼容级别设置为 80 或更低。极力建议使用 ANSI 外部联接运算符(LEFT OUTER JOIN、RIGHT OUTER JOIN)重写此查询。在将来的 SQL Server 版本中,即使在向后兼容模式下,也不支持非 ANSI 联接运算符。


EXEC sp_dbcmptlevel '库名', '80';
GO


原来在SQL语句中出现 *= (左链接)和 =*(右连接)的表示,但是这两种表示方法在sql2005之前的T_SQL版本中是不支持的。把出现的 *= 改成 left jon on ,=*改成 right join on 就行了。如下:

select * from test1 a, test2 b where( a.id *= b.id )
select * from test1 a left join test2 b on a.id=b.id
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值