好的。
你在说的N
不是一个函数,它可以做到。它是定义字符串文字的SQL语法的一部分。
单字节字符串文字
单字节字符串文字由导入在单引号('
),随后通过除单引号其他零个或多个其他字符的,随后通过引线 - 单引号('
)。为了消除歧义,任何嵌入的单引号是通过加倍将它们转义。字符串文字的词汇值不包括导入/导出引号也不一倍内部逃逸,所以字符串文字
'That''s crazy!`
具有词汇值
That's crazy!
这种字符串文字被定义为由数据库默认排序规则解释的单字节字符串。此外,每个字符占用一个字节。
因此,表达如
select *
from foo
where some_column = 'That''s crazy!'
是完全相同
declare @temp char(13) = 'That''s crazy!'
select *
from foo
where some_column = @temp
注意:虽然可以把Unicode字符,如Katagana或平假名在一个单字节字符串文字,你不可能得到你所期望的。
双字节(Unicode)的字符串文字
双字节(Unicode)的字符串文字以同样的方式定义,除了文字与N
前缀,以表明它的特殊:
`N'That''s crazy!'
再有词汇值
That's crazy!
,但在这种情况下,每个字符占用两个字节并且是Unicode UCS-2编码。
再次,这样的表达式
select *
from foo
where some_column = N'That''s crazy!'
是完全一样
declare @temp nchar(13) = 'That''s crazy!'
select *
from foo
where some_column = @temp
所以......你的问题: “我怎么可以添加N个?”没有意义。 N不是一个可以改变任何东西的函数。你不能把它应用到一个变量(你已经没在声明变量是nchar
类型或nvarchar
的。
你的问题在于你如何阅读您的CSV文件,你如何获取数据到您的@str
变量
我把'@str'的值放在一个csv文件中并保存为unicode txt,然后将扩展名改回csv,然后用pentaho kettle进行处理,一个转换文件与一个SP ,在SP'@str'中有来自csv文件的值并将其插入到db中。 – Kurt