因为数据库服务器使用的是Linux系统,当时创建数据库的时候没有注意,使得数据库内某些表的部分字段的排序规则使用了非中文的排序方式。
导致那些字段的中文内容查询出来乱码,如果不更改其排序方式的话,那么数据库涉及到的存储过程都需要在代码里做专门的处理,而挨个查看存储过程查找涉及情况,将是一个非常漫长的过程。
所以,将这些字段的排序规则更正为中文排序规则成了最终的解决方案。
为了进行更改,需要先查询出错误排序规则的字段分别有哪些,于是编写了如下代码:
--查询本数据库中,所有表的所有字段,筛选出其中排序规则使用了非中文排序方式的字段
SELECT
[表名] = MyTables.[name]
,[字段名] = C.[name]
,[数据类型] = ST.[name]
,[排序规则] = C.[collation_name]
FROM sys.columns C
JOIN sys.types ST ON C.[user_type_id] = ST.[user_type_id]
JOIN sys.tables MyTables ON C.[object_id] = OBJECT_ID(MyTables.[name])
WHERE C.[collation_name] NOT LIKE '%Chinese_PRC_CI_AS%'