大家好,
这是其中的转换赋值语句.直接在SELECT时转换失败.是我写错了,还是根本不能这样转?  SELECT   @VALUE1 = ISNULL(VALUE1,'1')
,@VALUE2 = ISNULL(VALUE2,'2')
,@VALUE3 = ISNULL(VALUE3,'3')
,@VALUE4 = ISNULL(VALUE4,'4')
,@VALUE5 = ISNULL(VALUE5,'5')
FROM ABC WHERE A=''AND BV=''现在临时方案是,用set赋值.
SELECT   @VALUE1 = VALUE1
,@VALUE2 = VALUE2
,@VALUE3 = VALUE3
,@VALUE4 = VALUE4
,@VALUE5 = VALUE5
FROM ABC_tabel WHERE A=''AND BV=''SET @VALUE1 = ISNULL(@VALUE1,'1')
SET @VALUE2 = ISNULL(@VALUE2,'2')
SET @VALUE3 = ISNULL(@VALUE3,'3')
SET @VALUE4 = ISNULL(@VALUE4,'4')
SET @VALUE5 = ISNULL(@VALUE5,'5')

解决方案 »

  1.   

    你的第一条select语句没问题的啊
      

  2.   

    第一条select返回多条语句了吧?
      

  3.   

    你第一条跟第二条语句其实表达的是一个意思。只是你第一条语句查询的是 ABC 表, 第二条查询的是 ABC_tabel 表。不知道你这两个表有什么不同了, 你具体的错误提示又是什么
      

  4.   

    -- 如果最前面的 select 语句,没有符合条件的记录,不会给语句的变量赋值 ,使用 isnull 也没用。
    -- 但是可以使用 聚合函数,比如 max 。
    -- 参考下面的例子。create table test(id int , name varchar(10))
    go
    declare @name varchar(10) = 'X'
    select @name = isnull(name,'Y') from test where id = 1 
    print '1.name:' + @name
    select @name = isnull(max(name),'Z') from test where id = 1 
    print '2.name:' + @name
    go
    drop table test 
    go1.name:X
    2.name:Z