代码之家  ›  专栏  ›  技术社区  ›  Kyle

将*******值'*****'转换为数据类型时转换失败******

  •  5
  • Kyle  · 技术社区  · 7 年前

    将*******值'*****'转换为数据类型时转换失败******

    我以前从未在****上看到过这种情况,谷歌搜索似乎什么都没有。SQL Server为什么会用星号提供此消息,这有什么已知的原因吗?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Joshua Kemmerer    6 年前

        2
  •  2
  •   spacebread    5 年前

    我的错误还包括:将******值'*****'转换为数据类型*******时,转换失败。

    我的问题最终出现在join中,即在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
    

    有关复制的详细信息: 有时查询可以正常工作。当我在WHERE子句中进行两个字符串比较时,我发现我个人有问题。

    WHERE field like '%' + @var + '%'
    OR field2 like '%' + @var2 + '%'
    

    如果我只有一个比较,它似乎工作良好。

        3
  •  0
  •   Tom Legg    5 年前

    我在尝试将nvarchar和int组合成单个字符串时也遇到了相同的错误。通常它会告诉我我在哪里搞砸了数据类型,但偶尔也会告诉我你得到的错误。

    SELECT ';' + [myNumber]
    

    SELECT ';' + CAST([myNumber] as nvarchar(100))
    

    为我解决了这个问题。

    因此,正如其他人所建议的,我猜这是类似的东西,你需要铸造或转换你的价值观之一,以匹配其余的。

        4
  •  0
  •   Razvan Socol    5 年前