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'