创建表导入数据后,查询结果无法正常显示,求大神指点
--在我的sql server 2008上
create table test
(
队伍 varchar(6) collate Greek_CS_AI, --这个排序规则是随便选了一个的
胜负 char(2) collate Greek_CS_AI --用来模拟你原来数据库的排序规则
)
go
insert into test
select '湖人','胜' union all
select '马刺','胜' union all
select '太阳','负' union all
select '马刺','负' union all
select '热火','胜' union all
select '湖人','胜' union all
select '太阳','负' union all
select '热火','负'
go
select * from test
/*
队伍胜负
???
???
???
???
???
???
???
???
*/
--之所以显示出这样是由于你新的服务器上的排序规则是Chinese_PRC_CI_AS
--所以就不能正常显示了。
--那怎么办呢?
--这个时候修改列的排序规则,或者把数据类型修改为nvarchar,也没什么效果
alter table test alter column 队伍 varchar(6) collate Chinese_PRC_CI_AS
alter table test alter column 胜负 char(2) collate Chinese_PRC_CI_AS
--显示还是不正常
select 队伍,
胜负
from test
/*
队伍胜负
???
???
???
???
???
???
???
???
*/
drop table test
--通过nvarchar和nchar类型,能比较好的解决问题
create table test
(
队伍 nvarchar(6) collate Greek_CS_AI, --这个排序规则是随便选了一个的
胜负 nchar(2) collate Greek_CS_AI --用来模拟你原来数据库的排序规则
)
go
insert into test
select N'湖人',N'胜' union all
select N'马刺',N'胜' union all
select N'太阳',N'负' union all
select N'马刺',N'负' union all
select N'热火',N'胜' union all
select N'湖人',N'胜' union all
select N'太阳',N'负' union all
select N'热火',N'负'
go
--现在虽然原始列的排序规则是 Greek_CS_AI
--而当前数据库的排序规则是Chinese_PRC_CI_AS,但数据照样能正常显示
select *
from test
/*
队伍胜负
湖人胜
马刺胜
太阳负
马刺负
热火胜
湖人胜
太阳负
热火负
*/