我正在将一些Access查询转换为tsql,当我尝试执行查询时会弹出此错误。 我猜测SQL Server不允许添加'bit'类型,因此我发现了其中出现的cultprit行,它们是:
SELECT DISTINCT
[modules].[b]+[modules].[w]+[modules].[e]+[modules].[j]+
[modules].[p]+[modules].[s] AS approvalRating, -- other columns here --
和
ORDER BY [modules].[b]+[modules].[w]+[modules].[e]+[modules].[j]+
[modules].[p]+[modules].[s],
modulePriority.configPriority,
[modulePositionalData].[highPos]-[modulePositionalData].[lowPos]+1,
modulePositionalData.iMax;
现在我没有创建原始的Access查询,我不知道添加布尔字段的意图是什么,这使得它有点问题,但有没有办法允许执行操作,结果是与Access执行的相同?
答案 0 :(得分:2)
您无法在sql server中添加位字段
但你可以将它们转换为int
所以
CAST(yourBitField as int) + CAST (yourSecondBitField as int)
顺便说一下(会说这是由于type preference order),如果只投出其中一个就可以了
CAST(yourBitField as int) + yourSecondBitField
但是全部投射可能“更容易阅读和理解”。
答案 1 :(得分:1)
您无法在SQL Server中添加位,因为它们只能是0或1.您可以先将它们转换为整数值,然后再添加它们。要将位转换为int,请使用CAST函数:
CAST([modules].[b] AS INT) + CAST([modules].[w] AS INT) + CAST([modules].[e] AS INT) ... etc
在此处查看有关SQL Server类型转换的更多信息:http://msdn.microsoft.com/en-us/library/ms187928.aspx
答案 2 :(得分:0)
如果字段来自典型字符,则可以使用。 选择[field1] + [field2]作为测试,[field3] 来自[表] 按测试排序
如果fiels来自其他类型你必须施放它们
这适用于我的数据库
答案 3 :(得分:0)
因为它们是位,你可以'或者'他们和| : https://msdn.microsoft.com/en-us/library/ms176122.aspx 这将给你相同的结果。