2010-05-14 57 views
7

如何在SQL Server中使用nvarchar变量为用户使用unicode前缀'N'?例如:如何在SQL Server中使用nvarchar变量为用户使用unicode前缀'N'?

鉴于此变量:

declare @Query1 nvarchar(max) 

我可以给它分配是这样的:

set @Query1 = N'لاحظات' 

但是如果我想使用[email protected]地方?

+0

声明@Query为nvarchar(最大) 声明@查询1为nvarchar(最大) \t \t集@查询1 = 'لاحظات' 我们可以使用N 'لاحظات' ,但如果我想使用N @ Query1怎么办? @ Query1动态来自数据库。 – 2010-05-14 18:30:04

+3

如果@ Query1 ** IS **是一个NVARCHAR变量,那么它**是一个NVARCHAR变量,并且您不需要用另一个'N'作为它的前缀使其成为NVARCHAR ....只是使用它 – 2010-05-14 18:31:49

+0

编辑我为你的答案。 – Jeremy 2010-05-14 19:01:14

回答

0

它与字符串文字一起用来指示文本应该被视为unicode。例如

DECLARE @something NVARCHAR(100) 
SET @something = N'sometext' 
+0

是的,但我想用@something而不是字符串。我怎么能够? – 2010-05-14 18:32:49

0
Declare @var nvarchar(255) 

Set @var = N'Hello World' 
print @var 

create table #tmp(columnA nvarchar(255) not null) 
insert into #tmp(columnA) Values (N'Test') 

Select @var = columnA from #tmp 
print @var 
drop table #tmp 
7

你只需要使用N'xyz”当你有文字文本。一旦nvarchar数据位于nvarchar数据类型的变量或结果集列中,您不再需要使用N'...'表示法,系统就会知道该点处的数据类型。

尝试一下:

DECLARE @A nvarchar(100) 
     ,@B nvarchar(100) 
SET @A = N'anything here!!' 

SET @[email protected] --would work the same if coming from a query result set as well 

SELECT @B --will show special unicode characters 
0
declare @nv1 nvarchar(50) = N'لاحظات', @nv2 nvarchar(50) = 'لاحظات', @v varchar(50) = N'لاحظات'  
declare @nv3 nvarchar(50) = @nv1 + ' hallo', @nv4 nvarchar(50) = @nv1 + N' hallo' 

select @nv1, @nv2, @nv3, @nv4, @v