Sql 在SSMS中打印出方框图形字符(扩展ascii)

Sql 在SSMS中打印出方框图形字符(扩展ascii),sql,sql-server,database,tsql,Sql,Sql Server,Database,Tsql,我想在SSMS的输出消息中打印方框图形字符。它包括一些字符,例如。║ 或░ 或╬. 我脑海中的人物的完整列表可以找到 当我尝试以下操作时:PRINT'╬'当我期待╬ 当我执行时,选择ASCII('╬')它返回43,但当我执行SELECT CHAR(43)时,它返回(毫不奇怪)+ 它与排序规则有关吗?如果是,我如何找到要使用的排序规则?您需要使用Unicode打印,即在它们前面加上N: PRINT N'╬' SQL Server中的一个简单文本是-默认情况下为CHAR/VARCHAR类型。这种类

我想在SSMS的输出消息中打印方框图形字符。它包括一些字符,例如。║ 或░ 或╬. 我脑海中的人物的完整列表可以找到

当我尝试以下操作时:
PRINT'╬'当我期待

当我执行
时,选择ASCII('╬')
它返回
43
,但当我执行
SELECT CHAR(43)
时,它返回(毫不奇怪)
+


它与排序规则有关吗?如果是,我如何找到要使用的排序规则?

您需要使用Unicode打印,即在它们前面加上
N

PRINT N'╬'

SQL Server中的一个简单文本是-默认情况下为
CHAR/VARCHAR
类型。这种类型是1字节编码的扩展ASCII:下半部分是纯拉丁字符集,上半部分取决于排序规则。这意味着,对非标准字符的支持非常少

第二种字符类型是
NCHAR/NVARCHAR
。这是(几乎)unicode,非常接近
utf-16
。实际编码是两字节编码的
UCS-2
。对非标准字符的支持(几乎)已经完成。任何以
N
开头的文字都被视为
NCHAR/NVARCHAR

试试这个:

SELECT '╬',N'╬';

DECLARE @str1a VARCHAR(10)='╬';
DECLARE @str1b VARCHAR(10)=N'╬'; --The NVARCHAR literal is changed to VARCHAR
DECLARE @str2 NVARCHAR(10)=N'╬'; 

SELECT @str1a,@str1b,@str2;
获取代码点和(反之亦然)获取字符的函数也有两个折叠:

SELECT ASCII('a'), UNICODE(N'a')
      ,ASCII('╬'), UNICODE(N'╬')
      ,CHAR(97),NCHAR(97),CHAR(43),NCHAR(43)
      ,NCHAR(9580)--does not work with `CHAR`

也许试试
N'╬'
unicode(N'╬')
nchar()
。提示:Windows通常包括一个
字符映射
应用程序,该应用程序将在字体中显示所有字符(名称、Unicode代码点等)。您可以使用它复制字符您可以粘贴到查询中。根据您所做的操作,创建假常量可能会更清晰,例如,
将@Box\u Top\u左上角声明为NChar(1)=NChar(0x250C);
,您可以在其他地方使用。谢谢,这确实回答了我的问题,但我也希望这样做:
打印字符(XXX)
。可能吗?我应该使用一些特定的排序规则吗?如何找出哪种排序规则?@PawełPilch您的打印注释是什么意思?CHAR函数用于ASCII字符,而这里的字符不是ASCII集的一部分,因此您为什么必须使用unicode。但不清楚您想要在那里使用什么。您想要用于打印注释的代码吗字符?如果是,请使用UNICODE函数。
NCHAR()
-这正是我需要的,也是最终回答我问题的方法。谢谢。