我在 SQL Server 2000 中做了一个查询,并在表名中间添加了一个句点:
SELECT t.est.* FROM test
代替:
SELECT test.* FROM test
并且查询仍然完美执行. Even SELECT t.e.st.* FROM test
执行没有问题。
我在 SQL Server 2008 中尝试了相同的查询,但查询失败(错误:列前缀与查询中使用的表名或别名不匹配)。出于纯粹的好奇心,我一直试图弄清楚 SQL Server 2000 如何以允许运行笨手笨脚的查询的方式处理表名,但到目前为止我还没有太多运气。
任何 SQL 专家都知道为什么 SQL Server 2000 运行查询没有问题吗?
Update:无论使用什么界面(例如企业管理器、SSMS、OSQL),查询似乎都可以工作,并且作为Jhonny https://stackoverflow.com/users/76832/jhonny-d-cano-leftware下面指出,当你尝试时,它甚至会奇怪地起作用:
SELECT TOP 1000 dbota.ble.* FROM dbo.table
也许表名称是由前缀和基本名称的简单串联构成的。
't' + 'est' == 'test'
也许在 SQL Server 的更高版本中,这种区别变得更加语义化/更加严格。
{ owner = t, table = est } != { table = test }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)