将******值'******'转换为数据类型******

时间:2018-06-28 19:19:29

标签: sql sql-server

我在运行大型查询时从SSMS 17上的SQL Server收到此错误:

  

将******值'******'转换为数据类型******

时转换失败

我以前从未用****看到它,谷歌搜索似乎什么也没有。为什么SQL Server会向此消息提供星号?

4 个答案:

答案 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,您将看到真正的价值。