INSERT INTO TEST
(
T
)
VALUES
(
N'强人'
)
像这样,插入数据没有问题,但如果更新的话 比方说如下面declare @t as nvarchar(20)
set @t='强人啊'
update test
set T=N@T
利用变量更新的话就会报错,改如何放置N的位置呢 ,请高手指点

解决方案 »

  1.   


    declare @t as nvarchar(20);
    set @t=N'强人啊';update test set T=@T;
      

  2.   


    set @t=N'强人啊'楼上两位高手 ,如果
    '强人啊'是从数据库中抽出来的数据,该怎么办。比方说 
    set @t=N‘列1’,这个时候该如何做呢
      

  3.   

    declare @t as nvarchar(20) set @t=N'强人啊' update test set T=@T
    应该这样写
      

  4.   

    直接update table set t = field where ...
    或者
    update tb1 set t = tb2.t from tb1 join tb2 on tb1.id = tb2.id where ...;
      

  5.   

    declare @t as varchar(20) 
    set @t='强人啊' 
    update test set T=cast(@T as nvarchar(20))
      

  6.   

    回楼上,是该这样写 。但是 现在如果 set @t=N'强人啊' 把 N后面的字符串改成一个变量(从数据库中抽出来的),改怎么拼接呢 
      

  7.   

    #6楼 写的很清楚了。无论是 nvarchar 类型的变量赋值,还是 nvarchar 类型的列更新,都可以直接使用 cast 函数将字符串或变量转换为 nvarchar 类型。
      

  8.   


    declare @s varchar(20)
    select @s = t from test  where id= 2
    update test set t = N''+@s+'' where id= 1
      

  9.   

    大家有没有什么好方法,一个表中的字段有很多乱码,数据量挺大,我想把这些数据抽出来,放在一个临时表中,然后利用循环想通过这种方式更新 
    declare @s varchar(20)
    select @s = t from test where id= 2
    update test set t = N''+@s+'' where id= 1但是这样不行,更新后的值还是乱码,这种方式好像N只对单引号起作用 ,有没有什么好方法~