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 可這樣插進去的簡體字是問號,繁體字正常?
set @jt= '啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥' set @ft= '啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翺襖傲奧' 改为ie set @jt= N'啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥' set @ft= N'啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翺襖傲奧'前面不是说过吗??在赋值的时候要加N。
set @test=N'你好'
insert into table1 (colname) values(@test)
Declare @InsertValue Nvarchar(10)
Set @InsertValue=N'測試'
insert table1 values(@InsertValue )
我的是繁體sqlserver2000
declare @test nvarchar(10)
set @test=N'测试'
exec('insert charset(gb) values('''+@test+''')')select 插入結果是問號如果直接
insert charset(gb) values(N'测试')
select 插入結果正確為什麼?
Set @InsertValue=N'測試'
insert table1 values(@InsertValue )
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 )
就可以的。
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 )
declare @t nvarchar(2)
set @t=N'蔼'
set @test=@t
exec ('insert charset(gb) values(N'''+@test+''')')可為什麼要加兩次N ?
declare @t nvarchar(2)
set @t=N'蔼'
set @test=@t
exec ('insert charset(gb) values(N'''+@test+''')')这么写的话,@t是不是多余了?
解決了,正確的寫法:declare @test nvarchar(10)
declare @t nvarchar(2)
set @t=N'蔼'
set @test=@t
exec ('insert charset(gb) values(N'''+@test+''')')可為什麼要加兩次N ?
---------------------------
这个我早就回答了啊,我上面不是说了乱码的原因就是少了一个N吗??
又有新的問題,如果 是set @t= substring(@tt,1,1) , 那N寫在哪裡?
-------------------------------------
这个时候就不需要加N的
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 可這樣插進去的簡體字是問號,繁體字正常?
set @ft= '啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翺襖傲奧'
改为ie
set @jt= N'啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥'
set @ft= N'啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翺襖傲奧'前面不是说过吗??在赋值的时候要加N。