【问题标题】:Error converting data type varchar to float SQL Server stored procedure将数据类型 varchar 转换为浮点 SQL Server 存储过程时出错
【发布时间】:2015-09-08 04:10:57
【问题描述】:

我一直在搜索和搜索,但仍然...给我一个错误。

我有这个存储过程:

CREATE procedure _spItemList
(
    @branch nchar(12)
    , @ItemNo float
    , @ItemDescription char(60)
)
as
begin
        SET NOCOUNT ON;

        select          
            Branch
            , CONVERT(varchar(100), ItemNo) ItemNo
            , Description1
            , Description2
            , FullDescription
        from
            _ItemList
        where           
            (Branch LIKE '%' + @branch + '%' or ISNULL(@branch, '') = '')
            and (ItemNo LIKE '%' + @ItemNo + '%' or ISNULL(@ItemNo, '') = '')
            and (FullDescription LIKE '%' + @ItemDescription + '%' or ISNULL(@ItemDescription, '') = '')
    end

我的表结构如下:

CREATE TABLE _ItemList
(
    [ItemNo] [float] NULL,
    [Description1] [char](30) NULL,
    [Description2] [char](30) NULL,
    [FullDescription] [char](60) NULL
)

当我执行存储过程时,我得到一个错误:

将数据类型 varchar 转换为 float 时出错

怎么了?存储过程中的 SQL Server 参数已经与表中的列具有相同的数据类型。有人知道吗?

【问题讨论】:

  • 旁注:char(60) 是一个非常糟糕的选择 - 无论您实际存储多少个字符,它总是用空格填充到定义的长度。随着时间的推移,这是对空间的巨大浪费 - 请改用 varchar(60)(对于长度超过 10 个字符的任何字符串)!

标签: sql sql-server-2008


【解决方案1】:

也尝试转换这句话,因为你正在连接 '%'(字符串)和 @ItemNo(浮点值),检查一下:

(ItemNo LIKE '%' + CONVERT(VARCHAR(100),@ItemNo) + '%' or ISNULL(@ItemNo, '') = '')

【讨论】:

  • 它发生了兄弟,发生编码,但明天:)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 2021-12-19
  • 1970-01-01
  • 2023-03-04
  • 2017-03-23
  • 2017-03-15
  • 1970-01-01
相关资源
最近更新 更多