declare @test nvarchar(10)
set @test=N'测试'
exec('insert table1 values('''+@test+''')')

解决方案 »

  1.   

    declare @test nvarchar(30)
    set @test=N'你好'
    insert into table1 (colname) values(@test)
      

  2.   

    直接插入就可以了
    Declare @InsertValue Nvarchar(10)
    Set @InsertValue=N'測試'
    insert table1 values(@InsertValue )
      

  3.   

    按你的插進去的是問號,如果是insert table1 values(N'测试')則正常顯示。
    我的是繁體sqlserver2000
      

  4.   

    如果是:
    declare @test nvarchar(10)
    set @test=N'测试'
    exec('insert charset(gb) values('''+@test+''')')select 插入結果是問號如果直接
    insert charset(gb) values(N'测试')
    select 插入結果正確為什麼?
      

  5.   

    你试过这个没??这个是可以的。不需要用动态语句的。Declare @InsertValue Nvarchar(10)
    Set @InsertValue=N'測試'
    insert table1 values(@InsertValue )
      

  6.   

    declare @test nvarchar(10)
    set @test=N'测试'
    exec('insert charset(gb) values('''+@test+''')')
    这个语句错误的原因是没加N,改为
    declare @test nvarchar(10)
    set @test=N'测试'
    exec('insert charset(gb) values(N'''+@test+''')')我上面已经说了,没必要用动态语句的,直接
    Declare @InsertValue Nvarchar(10)
    Set @InsertValue=N'測試'
    insert table1 values(@InsertValue )
    就可以的。
      

  7.   

    paoluo(一天到晚游泳的鱼) :試了,你的可以。可是如何Set @InsertValue=N'測試' 寫成變量的形式?
      

  8.   

    @InsertValue不就是一个变量吗??Set @InsertValue=N'測試' 只是给它赋值啊。
      

  9.   

    eg:
    Declare @InsertValue Nvarchar(10)
    Set @InsertValue =Name+N'測試' from tblName Where ID=11
    insert table1 values(@InsertValue )OR 
    Declare @A Nvarchar(10)
    Declare @B Nvarchar(10)
    Declare @InsertValue  Nvarchar(50)
    Set @A=N'測'
    Set @B=N'試'
    Set @InsertValue =@A+@B
    insert table1 values(@InsertValue )
      

  10.   

    解決了,正確的寫法:declare @test nvarchar(10)
    declare @t nvarchar(2)
    set @t=N'蔼'
    set @test=@t
    exec ('insert charset(gb) values(N'''+@test+''')')可為什麼要加兩次N ?
      

  11.   

    declare @test nvarchar(10)
    declare @t nvarchar(2)
    set @t=N'蔼'
    set @test=@t
    exec ('insert charset(gb) values(N'''+@test+''')')这么写的话,@t是不是多余了?
      

  12.   

    又有新的問題,如果 是set @t= substring(@tt,1,1) ,  那N寫在哪裡?
      

  13.   

    回复人: ruader() ( ) 信誉:100  2005-05-19 18:50:00  得分: 0  
     
     
       解決了,正確的寫法:declare @test nvarchar(10)
    declare @t nvarchar(2)
    set @t=N'蔼'
    set @test=@t
    exec ('insert charset(gb) values(N'''+@test+''')')可為什麼要加兩次N ?
      
     
    ---------------------------
    这个我早就回答了啊,我上面不是说了乱码的原因就是少了一个N吗??
      

  14.   

    回复人: ruader() ( ) 信誉:100  2005-05-19 18:58:00  得分: 0  
     
     
       又有新的問題,如果 是set @t= substring(@tt,1,1) ,  那N寫在哪裡?
      
     
    -------------------------------------
    这个时候就不需要加N的
      

  15.   

    create proc sp_getBig5Char @c nvarchar(1)
    as
    declare @v nvarchar(1)
    declare @jt nvarchar(4000)
    declare @ft nvarchar(4000)
    declare @i int
    declare @j int
    declare @t1 nvarchar(1)
    declare @t2 nvarchar(1) set @jt= '啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥'
    set @ft= '啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翺襖傲奧'
    set @v = @c
    set @t1 = ''
    set @t2 = ''
    set @i = 1
    set @j = 1 while(@i <= len(@jt))
    begin
    set @t1=substring(@jt,@i,1)
    set @t2=substring(@ft,@i,1)
    insert charset(gb,big5) values(substring(@jt,@i,1),substring(@ft,@i,1))
    set @i = @i + 1
    end 可這樣插進去的簡體字是問號,繁體字正常?
      

  16.   

    set @jt= '啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥'
    set @ft= '啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翺襖傲奧'
    改为ie
    set @jt= N'啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥'
    set @ft= N'啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翺襖傲奧'前面不是说过吗??在赋值的时候要加N。