当前位置: 代码迷 >> Sql Server >> sql server case 语句异常疑问
  详细解决方案

sql server case 语句异常疑问

热度:62   发布时间:2016-04-24 09:17:23.0
sql server case 语句错误疑问
SELECT     ,GO1
CASE
WHEN banbie='白班' 
THEN 调用标量值函数返回一个人时间点
WHEN banbie='中班'
THEN  同上
WHEN  banbie='晚班'
AND (EMHR2005.dbo.getshuaka_smMTH(a.EmpNo, '04:30', CONVERT(varchar(10), a.YYMMDD, 120))<>NULL
OR EMHR2005.dbo.getshuaka_smMTH(a.EmpNo, '04:30', CONVERT(varchar(10), a.YYMMDD, 120))<>'')
THEN  返回04:30以后的时间点
WHEN  banbie='晚班'
AND (EMHR2005.dbo.getshuaka_smMTH(a.EmpNo, '04:30', CONVERT(varchar(10), a.YYMMDD, 120))=NULL
OR EMHR2005.dbo.getshuaka_smMTH(a.EmpNo, '04:30', CONVERT(varchar(10), a.YYMMDD, 120))='')
THEN  这里返回06;30的时间点
ELSE NULL END as out1
FROM  table  as a
以上语句我分开执行都能正常运行,合在一起就报错,错误如下:
无法解决 not equal to 操作中 "Chinese_PRC_CI_AS" 和 "Chinese_Taiwan_Stroke_CI_AI" 之间的排序规则冲突。
希望大家给我说下我哪里错了,怎么解决错误?
------解决思路----------------------
排序问题:应该出在这个函数里排序冲突
EMHR2005.dbo.getshuaka_smMTH

在定义时可强制排序就行了,如:
条件列强制其中一列同别一列相同排序:
a.name COLLATE Chinese_PRC_CI_AS =b.name 
a.name=b.name COLLATE Chinese_PRC_CI_AS

语句有误<>NULL--需要改为 is not null,不然需要在语句前声明
如:
SET ANSI_NULLS Off ;
IF NULL =NULL
SELECT 'OK'
  相关解决方案