DECLARE @str NVARCHAR(20)
SET @str = 'SQL数据库'
SELECT @str AS [没N]
--SQL???
SET @str = N'SQL数据库'
SELECT @str AS [有N]
--SQL数据库
--在第一种,变量已赋值的情况下,怎么能让汉子正常输出
------解决思路----------------------
DECLARE @str NVARCHAR(20)
SET @str = 'SQL数据库'
SELECT cast(@str as nvarchar(20)) AS [没N]
--SQL???
SET @str = N'SQL数据库'
SELECT @str AS [有N]
/*
没N
--------------------
SQL数据库
(1 row(s) affected)
有N
--------------------
SQL数据库
(1 row(s) affected)
*/
------解决思路----------------------
如果已经存入实体表中,只能重新存储,你说的变量赋值是没存进去是吧?那把变量转换成nvarchar,
------解决思路----------------------
我这里正好有两个版本的SQL Server,2008中和#1一样都是SQL数据库,2000中没N是SQL数据?。
这是SQL解析器的问题。
字符变成?后已经丢失了原始字符的信息,是不可能恢复的。
------解决思路----------------------
无解,编码已经当成乱码被赋到@str了,就算用二进制读出来也是???的二进制
------解决思路----------------------
数据库->属性

------解决思路----------------------
Maintenance ->Collation