关于MSSql 2005 数据库的排序规则

between "Chinese_PRC_CI_AS" and "SQL_Latin1_General_CP1_CI_AS"的问题

某网友的解决办法: 该办法在使用where或inner join时没有区别
DataTable t = Luo.Base.ExecuteSql4Ds("select [游船时刻表].*,[游船].[星级],[游船].[向上价格],[游船].[向下价格],[游船].[静态文件名] from [游船时刻表] inner join [游船] on [游船时刻表].[游船名称]  COLLATE SQL_Latin1_General_CP1_CI_AS   =[游船].[游船名称] order by [游船时刻表].[游船名称]").Tables[0];

DataTable father_table = Luo.Base.ExecuteSql4Ds("select  [行程类型].[行程类型名称] from [行程类型] where [行程类型].[行程类型名称]  COLLATE SQL_Latin1_General_CP1_CI_AS  in(select [行程].[行程类型] from [行程])").Tables[0];
        DataTable son_table = Luo.Base.ExecuteSql4Ds("select * from [行程] where  [行程].[行程类型]   COLLATE SQL_Latin1_General_CP1_CI_AS   in(select  [行程类型].[行程类型名称] from [行程类型] where [行程类型].[行程类型名称]  COLLATE SQL_Latin1_General_CP1_CI_AS  in(select [行程].[行程类型] from [行程]))").Tables[0];
        father_table.TableName = "t1";
        son_table.TableName = "t2";

        DataSet ds = new DataSet();
        ds.Tables.Add(father_table.Copy());
        ds.Tables.Add(son_table.Copy());
        ds.Relations.Add("myrelation", ds.Tables[0].Columns["行程类型名称"], ds.Tables[1].Columns["行程类型"]);


        Repeater_tourtype.DataSource = ds.Tables[0];
        Repeater_tourtype.DataBind();



以下是在网上搜索到的:

  最近在测试程序的时候,因为我总是不停地换数据库测试,发现了一个问题,在有些库里面运行正常的程序,在另外一些库中就会出现错误,提示为:
  Msg 468, Level 16, State 9, Line 1
  Cannot resolve the collation conflict between
   "Chinese_PRC_CI_AS" and "SQL_Latin1_General_CP1_CI_AS"
  in the equal to operation.
  
  出现这样的错误的代码中,都有创建临时表“create table #tmp(。。。)”这样的操作,因为数据库都是从标准测试库中备份恢复出来的,估计是因为字符集不一样的原因。解决的方法是在创建临时表的时候增加collate database_default。
  例如:
  create table #tmp (code nvarchar(10) collate database_default)

另一种说法:
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Chinese_PRC_CI_AS" in the equal to operation??
使用的数据库是英文的  是不是语言问题 怎么解决??

1排序规则冲突。什么操作时引起的?
2看看你表的字段排序规则是否一致。
3再加上Collate子句好了
原因是有两种排序规则,必须显示指定其中一种
把语句贴出来更好说明一点
4操作时指定COLLATE
5将表结构里字段排序规则 改为一致就可以了
6WHERE A.Column COLLATE SQL_Latin1_General_CP1_CI_AS = B.Column

第三种说法:


在SQL Server端不能将汉字作为查询条件

我使用一个系统,开发工具为PB9.0,数据库为SQL Server2000英文版,我们的用户在前端可正
常输入汉字,我也可在SQL Query Analyzer查看到汉字,但当我在SQL Query Analyzer上用汉字
作为查询条件时,就查不出记录,如下查询语句:
select * from employee where empname='张华'.
但是在PB9.0端可以查询。
请问:有谁知道怎样解决及什么原因?谢谢!
set quoted_identifier on 开启分隔标示符。
谢谢KAKAJE的回答,我设定了set quoted_identifier on, 但执行以汉字为查询条件的语句时,
仍然不能返回记录,如下语句:
select * from employee where empname='张华' OR
select * from employee where empname=N'张华'.
请问:我还可以怎样做?及设定set quoted_identifier on 对数据库是否有影响?谢谢!
你试试这个行不行

select * from employee where ename like '%张华%'
like语句也是不可以的,我想应该是SQL Server不能正确转化汉字的内码,但我不知道应怎样做

what is the collation of the employee table name column,  
it should like:
   chinese_prc_......

The column's collation is: SQL_Latin1_General_CP1_CI_AS, and this is database
defualt value. because the SQL Server2000 is been upgraded from SQL Server6.5, I use
all default setting according to SQL Server6.5. and I don't dare modifing the
collation because I worry about there are any error caused.

SQL_Latin1_General_CP1_CI_AS is usually used from english edition.  You can set your
NAME table as
nchar or nvarchar data type, and use Chinese_Prc_CI_AS as the column collation.  It
will work fine for both english and chinese name.  
  When you insert/query data, always use  N'张华' as your constant expression, since
it will treat it as a unicode string instead of a ANSI string.

Thank you: qingsongy. Now My database exists the following some case:
1. The collation of Database: SQL_Latin1_General_CP1_CI_AS . and I don't know
whether can change its collation to Chinese_Prc_CI_AS and how to change?
2. When I want to change the column: empname's collation from <database Default> to
Chinese_Prc_CI_AS, there is a error encountered and can't be changed, the error as
follows:
'employee' table
- Unable to modify table.  
ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server]Line 4: Incorrect syntax
near 'COLLATE'.
Please ask how to solve it?
3. There isn't Chinese_Prc_CI_AS the option in [SQL Collation], Only [Windows
Collation] includes it. Please ask the difference between [SQL Collation] and
[Windows Collation]?
At fact, I made a testing database and the testing database's collation is
Chinese_Prc_CI_AS, then I copy all data from living database. On SQL Server I can
enquiry relevant records by chinese enquiry condition.
By the way, My SQL Server IS SQL Server2000 English Standard Edition.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烈火蜓蜻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值