我在运行大型查询时从SSMS 17上的SQL Server收到此错误:
将******值'******'转换为数据类型******
时转换失败
我以前从未用****看到它,谷歌搜索似乎什么也没有。为什么SQL Server会向此消息提供星号?
答案 0 :(得分:1)
您是否正在从视图中获取数据?如果是这样,则您使用的视图可能存在问题。例如,就我而言,我是从一个视图中拉出的,当我尝试在SSMS中查看它时,它向我显示了有关错误原因的更多详细信息。
答案 1 :(得分:1)
我的错误也是:将******值'******'转换为数据类型******时,转换失败。
我的问题最终出现在我的联接中,该联接是在int字段上联接varchar(50)字段。
SELECT TOP (10) Product.Name, ProductDetails.Price
FROM Product
--the ProductDetails.Product field is a varchar field that contains
--a string of the ProductID which is an int in the Product table
FULL JOIN Product.ProductID = ProductDetails.Product
我通过将int字段转换为varchar来纠正了这一点
FULL JOIN CAST(Product.ProductID as varchar(50)) = ProductDetails.Product
P.S。我回去,后来更改为Left外部联接,这对于我们的业务逻辑来说具有更多的意义。 我也没有测试此代码,出于说明目的对其进行了修改。
复制细节: 有时查询会正常工作。当我在WHERE子句中进行两次字符串比较时,我发现我个人遇到了问题,例如
WHERE field like '%' + @var + '%'
OR field2 like '%' + @var2 + '%'
如果我只有一个比较,它似乎可以正常工作。
答案 2 :(得分:0)
当尝试将nvarchar和int组合为单个字符串时,我遇到了相同的错误。通常它会告诉我数据类型错误,但偶尔会出现错误。
我来自
SELECT ';' + [myNumber]
到
SELECT ';' + CAST([myNumber] as nvarchar(100))
为我解决了这个问题。
因此,正如其他人所建议的那样,我想这很相似,您需要CAST或转换其中一个值以匹配其余值。
答案 3 :(得分:0)
当您没有足够的权限时,将显示星号。看来它们仅在某些情况下出现(在我的情况下,当使用用户定义的函数时)。
我不知道为什么,但是似乎,如果您授予UNMASK,您将看到真正的价值。