# 校核分类 > 校核规则主要分为无前提条件校核和有前提条件校核两个部分。 ## 无前提条件校核 是指该部分校核,不存在前置条件,直接作为校核(查询)依据,该部分校核多为单条件, 或为某指标项为空(或未填写); 或为某指标项包含特殊字符串(多使用正则匹配); 或为某指标项不为6或8位数字(由于当前描述时间指标项均为字符串类型,可以填写到月,也可以精确的日,其实潜在描述不为 `时间字符串` ); 或为某指标项是否超出代码值范围等。 -- “政治面貌”为空 select count(1) from A01_temp WHERE 1=1 AND A01_temp.A0000 = :A0000 AND (A0141 is null or A0141='') /* 说明:xx 为空 ,主要是针对未录入操作,针对MySQL数据库存在null和空字符串两种状态,索引需要分开进行限制 */ -- 姓名中含有除“·”之外的特殊符号、数字或字母 select count(1) from A01_temp WHERE 1=1 AND A01_temp.A0000 = :A0000 AND ( A0101 regexp '[0-9a-zA-Z]'OR A0101 regexp '[[:digit:]]' OR A0101 regexp '[[:punct:]]' OR A0101 regexp '[:whitespace:]' OR A0101 regexp '[[:cntrl:]]' OR A0101 regexp '[[:space:]]' OR A0101 LIKE '%(%' OR A0101 LIKE '%)%' OR A0101 LIKE '%(%' OR A0101 LIKE '%)%' OR A0101 like '% %' OR A0101 like '% %' ) /* 说明:xx 包含特殊符号、数字或字母 ,主要是使用正则进行匹配,数字“0-9”、字母“A-Za-z”等 */ -- “出生年月”不为6或8位数字 select count(1) from A01_temp WHERE 1=1 AND A01_temp.A0000 = :A0000 AND isDate(A0107)=0 and A0107 is not null and A0107 != '' /* 说明:xx 不为6或8位数字 ,主要是针对时间字段,但是数据库是使用字符串进行存储的,有的时候会精确到日,有时候精确到月。 其中:isDate() 是在数据库内置的判断时间字符串函数 */ -- “民族”超出代码值范围 select count(1) from A01_temp WHERE 1=1 AND A01_temp.A0000 = :A0000 AND A0117 NOT IN ( SELECT code_value FROM code_value WHERE code_type = 'GB3304' and CODE_STATUS='1' and CODE_LEAF='1') and A0117 is not null and A0117 != '' /* 说明:xx 超出代码值范围 ,主要是针对使用字典框或下拉框类别,应该正确选择字典字符串,非范围内或废弃字典均会被筛选出来。 */ ## 有前提条件校核 是指该部分校核,不存在前置条件,直接作为校核(查询)依据,该部分校核多为单条件, 或为某指标项为空(未填写); 或为某指标项(时间指标)不在某时间范围,或与校核截至时间比较; 或为某指标项是否超出代码值范围等。 > 补充:其中也存在某些前提条件,主要看校核描述是否存在前提条件因子。 > -- 机构信息集“机构类别”超出代码值范围或为根节点代码值 > '' AND B0131 NOT IN(SELECT code_value FROM code_value WHERE code_type='ZB04' and CODE_STATUS='1' and CODE_LEAF='1')]]> > > 存在前提条件“属于法人单位的机构”才进行 > (补充:WHERE 1=1 AND B01_temp.B0111 = :B0111 AND特定格式) ## 每年变动规则 该部分校核规则多与指定时间有关,脚本中会写死具体条件。当汇数年度发生变化,该部分年份信息,也需要跟着修改。 ## 总结 数据校核是一项解决数据质量重要手段,但是往往校核规则会被简化成俗语,有些精简的比较深的话,里面包含大量的前提条件;同时有些被简化的俗语,按照直观意思无法理解。 > `有些精简的比较深的话,里面包含大量的前提条件`:涉及存在前提条件,需要积累一些公务员人事的常识,或者咨询定制规则的用户。 > `被简化的俗语,按照直观意思无法理解`:需要咨询定制规则的用户,用户目的到底是什么。 往往在完成校核条件定义的时候,开发人员常使用固定SQL语句进行实现,当然也可以通过校核方案进行配置,但是这些条件都仅仅是针对简单规则易用。 ### 最后结论: `咨询定制规则的用户`