Sql 如何将N(unicode)添加到变量(变量中已有的值)

Sql 如何将N(unicode)添加到变量(变量中已有的值),sql,sql-server,tsql,Sql,Sql Server,Tsql,嗯,我知道论坛上也有一些类似的问题,但仍然没有明确的解决办法 我想将N添加到变量中以将双字节(日语)存储到db表中,但我不知道如何将N添加到变量中 该值已经在变量@value中,它会从CSV文件自动获取其值(日语) 我要做的是将值插入到具有正确日文字符的db表中。所以我做了 declare @finalValue nvarchar(255); set @finalValue=N@value; --obviously, it is NOT correct. --insert ..

嗯,我知道论坛上也有一些类似的问题,但仍然没有明确的解决办法

我想将
N
添加到变量中以将双字节(日语)存储到db表中,但我不知道如何将
N
添加到变量中

该值已经在变量
@value
中,它会从CSV文件自动获取其值(日语)

我要做的是将值插入到具有正确日文字符的db表中。所以我做了

   declare @finalValue nvarchar(255);
   set @finalValue=N@value; --obviously, it is NOT correct.
   --insert ........
要在表中插入正确的
@finalValue
,我应该怎么做?

您尝试过吗

declare @finalValue nvarchar(255);
set @finalValue=cast(@value as nvarchar(255))
隐式转换也可以工作。。如果大小不匹配,可能会收到截断警告

declare @finalValue nvarchar(255);
set @finalValue=@value

N'some text'
是定义双字节字符串文字的一种方法。不能将其用于Transact-SQL变量

@value
变量的数据类型是什么?在大多数情况下,您可以执行以下操作:

create table foo ( dbcs_string nvarchar(2000) not null )
...
declare @my_variable varchar(2000)
set @my_variable = 'the quick brown fox jumped over the lazy dog.'
...
insert foo ( dbcs_string ) values ( @my_variable)
转换将隐式完成

但是,您可以使用
convert()
函数将变量显式强制为正确的类型:

convert(nvarchar(2000),@my_variable)

如果没有N,它可以工作吗?我想在表中插入日语,该值来自CSV文件@“值”被声明为nvarchar以存储csv文件中的值。但此时,如果我插入'@value',在db表中仍然显示“?”。因此,我必须在'@value'中添加类似于N的内容,然后将其插入表中。有没有办法做到这一点?或者另一种方法?你是如何读取文本文件的?听起来您在阅读时没有使用正确的代码页。“但此时,如果我插入'@value',在db表中仍然显示“?”。“您在db中看到了什么?是否可能字符存储正确,但显示不正确?我想在表中插入日语,该值来自CSV文件@“值”被声明为nvarchar以存储csv文件中的值。但此时,如果我插入'@value',在db表中仍然显示“?”。因此,我必须在'@value'中添加类似于N的内容,然后将其插入表中。有没有办法做到这一点?或者另一种方法?不行。”@从CSV文件获取值时,“值”已声明为nvarchar。如果您的@value已设置为Unicode,而您仍然获取“?”值。。。源代码一开始不是unicode。您必须将东亚字符集转换为unicode。换句话说,问题不是价值->最终价值,而是。。来源->价值。我希望这是有道理的。看看