【问题标题】:Getting error when putting VARCHAR data and searching INT value放置 VARCHAR 数据和搜索 INT 值时出错
【发布时间】:2017-09-26 16:39:05
【问题描述】:

以下是我的查询和错误。当我放入 VARCHAR 变量并传入 INT 值时,我得到了错误。

查询:

    declare @vid VARCHAR(MAX)
    set @vid= ('3,5,7')

    Select (Stuff((Select ', ' + VehicleClassName 
    From VehicleClass_Master  
    where VehicleClassId  in (@VID) FOR XML PATH('')),1,2,''))

错误:

消息 245,第 16 级,状态 1,第 3 行 将 varchar 值 '3,5,7' 转换为数据类型 int 时转换失败。

【问题讨论】:

标签: sql-server sql-server-2008


【解决方案1】:

您的变量 @vid 是一个包含非数字字符 (,) 的 varchar;它也不是一个“列表”,它只是一个包含单个值的字符串,其中恰好有数字和逗号。

要实现您想要的,请将@vid 创建为具有单个 INT 列的表变量,然后将每个值插入为单独的行 - INSERT @vid_table(vid) VALUES (3),(5),(7);

最后把你的IN (@VID)改成IN (SELECT VID FROM @vid_table)

【讨论】:

    【解决方案2】:
    declare @vid VARCHAR(MAX),@query varchar(max)
    set @vid= ('3,5,7')
    SET @query = 'Select (Stuff((Select '', '' + VehicleClassName From VehicleClass_Master  where VehicleClassId  in (' + @vid + ') FOR XML PATH('''')),1,2,''''))'
    EXEC (@query)
    

    【讨论】:

    • 或者您可以将其作为动态 SQL :)
    猜你喜欢
    • 1970-01-01
    • 2021-10-02
    • 2011-06-04
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 1970-01-01
    相关资源
    最近更新 更多