确定表/数据库的字符集?

24

在SQL Server中,可以运行哪个T-SQL命令来查找表或数据库的字符集?

编辑: 服务器版本:Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64)


运行 SQL Server Management Studio 并运行 Select @@Verion 来检查 SQL Server 的版本。 - Raj More
请参考 DATABASEPROPERTYEXSERVERPROPERTY - LCJ
3个回答

29

您可以使用以下方式检查版本:

SELECT @@VERSION;

如果版本号是9.00或更高,您可以使用以下方法检查列的排序规则

SELECT collation_name FROM sys.columns 
WHERE name = 'column name'
AND [object_id] = OBJECT_ID('dbo.table name');

对于使用数据库的部分

SELECT collation_name FROM sys.databases 
WHERE name = 'database name';

如果版本号小于9.0,则使用的是SQL Server 2000或更低版本。对于2000版本,您可以检查类似的列(例如syscolumns.collationid)。


这对我很有效;注意 collation_name 可以告诉您正在使用哪个“代码页”,如此处所示。例如,如果 collation_name 值为 "SQL_Latin1_General_CP1_CI_AS",请注意:
CP1 代表 Code Page 1252
- Nate Anderson

15

字符集取决于列的数据类型。您可以使用此SQL了解数据库中哪些列使用了哪些字符集以及排序规则:

select data_type, character_set_catalog, character_set_schema, character_set_name, collation_catalog, collation_schema, collation_name, count(*) count
from information_schema.columns
group by data_type, character_set_catalog, character_set_schema, character_set_name, collation_catalog, collation_schema, collation_name;

如果使用默认字符集,则 char 和 varchar 数据类型的 character_set_name 应该是 iso_1(ISO 8859-1)。由于 nchar 和 nvarchar 以 UCS-2 格式存储 Unicode 数据,因此这些数据类型的 character_set_name 是 UNICODE。


11

要检查 SQL Server 的排序规则,请在 SQL Server Management Studio 中运行以下代码(将数据库名称放在相应的位置):

SELECT DATABASEPROPERTYEX('DatabaseNameGoeshere', 'Collation') DatabaseCollation;
注意,排序设置可以在每个级别上进行设置。
服务器。
SELECT SERVERPROPERTY('Collation')  as ServerCollation

数据库

SELECT DATABASEPROPERTYEX('DatabaseNameGoeshere', 'Collation') DatabaseCollation;

列(SQL Server 2005或更高版本)

Select TABLE_NAME, COLUMN_NAME, Columns.COLLATION_NAME
From INFORMATION_SCHEMA.COLUMNS

列 (低于 SQL Server 2005)

SELECT name, collation_name
FROM syscolumns
WHERE OBJECT_ID IN 
(
    SELECT OBJECT_ID
    FROM sysobjects
    WHERE type = 'U'
    AND name = 'TableNameGoesHere'
)
AND name = 'ColumnNameGoesHere'

我收到了空响应。这是什么意思? - shealtiel
你在查询中放置了适当的数据库名称吗? - Raj More
sys.columnssys.objects在SQL Server 2005之前不可用,我认为您可能把这两个搞反了。 - Aaron Bertrand
找到了一个包含官方信息的链接(注意:适用于SQL Server 2012):http://technet.microsoft.com/zh-cn/library/hh230914.aspx - Hajo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接