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

she*_*iel 17 sql-server collation sql-server-2008-r2

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

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

Aar*_*and 22

您可以使用检查版本

SELECT @@VERSION;
Run Code Online (Sandbox Code Playgroud)

它是9.00或更高,您可以使用检查列的排序规则

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

并为数据库使用

SELECT collation_name FROM sys.databases 
WHERE name = 'database name';
Run Code Online (Sandbox Code Playgroud)

如果它<9.0,那么你使用的是SQL Server 2000或更低版本.对于2000年,我相信你可以检查类似的列(例如syscolumns.collationid列).


Rob*_*com 14

字符集取决于列的数据类型.您可以了解使用哪些字符集用于数据库中的列以及使用此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;
Run Code Online (Sandbox Code Playgroud)

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


Raj*_*ore 9

要检查SQL Server的排序规则,请在SQL Server Management Studio中运行它(将数据库名称放在适当的位置)

SELECT DATABASEPROPERTYEX('DatabaseNameGoeshere', 'Collation') DatabaseCollation;
Run Code Online (Sandbox Code Playgroud)

请注意,可以在每个级别设置排序规则设置

服务器

SELECT SERVERPROPERTY('Collation')  as ServerCollation
Run Code Online (Sandbox Code Playgroud)

数据库

SELECT DATABASEPROPERTYEX('DatabaseNameGoeshere', 'Collation') DatabaseCollation;
Run Code Online (Sandbox Code Playgroud)

列(SQL Svr 2005或更高版本)

Select TABLE_NAME, COLUMN_NAME, Columns.COLLATION_NAME
From INFORMATION_SCHEMA.COLUMNS
Run Code Online (Sandbox Code Playgroud)

列(低于SQL Svr 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'
Run Code Online (Sandbox Code Playgroud)