2014-11-25 23 views
0

我想將非英文unicode字符保存到SQL Server中的表中。如何在SQL Server中使用動態查詢存儲非英文unicode字符

declare @cSql varchar(200) 
set @cSql = '' 

declare @cCode varchar(10) 
set @cCode = '001' 

declare @cKName Nvarchar(200) 
set @cKName = N'ಒಂದು' 

Insert into DepMast (omCode, omKName) 
Values(@cCode, @cKName) 

在執行上述代碼時,會根據需要保存unicode字符。

但是,如果我使用動態查詢,則存儲'?????'

set @cSql = 'Insert into DepMast (omCode, omKName) 
      Values(''' + @cCode + ''',''' + @cKName + ''')' 

exec(@cSql) 

使用動態查詢存儲unicode字符的任何想法?

+0

什麼是您的數據庫整理? – Raj 2014-11-25 06:21:55

+0

這是SQL_Latin1_General_CP1_CI_AS – user2944673 2014-11-25 06:28:49

回答

1

此行爲的兩個原因 - 首先,您已聲明@cSqlvarchar數據類型,@cKNamenvarchar數據類型。其次,在插入時,您不會在N前添加值。這應該解決問題

declare @cSql nvarchar(200) --changed datatype to nvarchar 
set @cSql='' 
declare @cCode varchar(10) 
set @cCode='001' 
declare @cKName nvarchar(200) 
set @cKName=N'ಒಂದು' 
set @cSql='Insert into DepMast (omCode,omKName) 
Values('''[email protected]+''',N'''[email protected]+''')' -- added the "N" prefix 
exec(@cSql) 
+0

謝謝你。它正在工作。 – user2944673 2014-11-25 06:55:04

相關問題