sqlserver,你的delete语句表名为什么不能别名?

    前几天写了几行sql,用于清除环境里面的脏数据,平时开发用的是oracle数据库,看了下里面的语句,处理concat字符串拼接函数看起来稍微特殊点,其它都没有啥问题。百度了下,cancat可以用在收起来server2012及以上版本的数据库中,因此没有在sqlserver进行自测,直接git提交了代码。
    今天测试拿到包,在sqlserver下使用,直接报错,刚开始报的是那个表名别名附近有语法错误,还以为是sqlserver不支持concat,赶紧换成了加好拼接。拿到测试环境去试了下,还是一样的报错,直接告诉我,这个问题没这么简单了。自己再初始化了一个sqlserver数据了,连到了sqlserver数据库下,使用同样也是报错。看了很久,想了下莫不是别名的问题,百度了下,还真的是,sqlserver下,delete后面的表名不能有别名,卧槽,以前怎么没遇到过,然后改了,就好了,一连改了很多条sql。
    后面稍微查了下,发现在sqlserver环境下,如果delete后面表名有别名,sqlserver会把别名认为是别名造成执行出错。

猜你喜欢

转载自my.oschina.net/u/2618266/blog/1799939