工作中使用case用法小结
五证合一sql语法解决办法
工作的时候,数据库里面存储某张表里面证件号码存储在不同的字段下面,然后前台需要写一个查询语句,根据数据库里面存储证件号码查询该条数据。
实际情况如下
有些部门上传数据,不是只固定填写在某个字段,也会在别的字段里面填写证件号,
举个例子:1统一社会信用代码,2组织机构代码,3工商登记码,4税务登记号,5居民身份证号
这5个证件号码,如果只取其中一个字段(比如统一社会信用代码)进行查询的话,会导致不在该字段填写证件号码的数据遗漏,就会造成数据查询不完整。
这时候,只取一个字段是有问题,通俗的讲:5个字段的证件号码,当第一个字段为空的时候,就需要到第二个字段里面取数据了,直到取到带有证件号码数据的字段,但是如果所有带有证件的字段都没有数据的话,这条数据就是无效数据,数据没有办法进行使用。
这个时候,用case语法可以解决。
案例:该表的五证,只有前面字段两个含有证件号码,第一个证件字段有些数据为空,但是第一个字段为空的数据在其余的字段里面含有证件号码。
我写的语句为:
select case when TYSHXYDM is not null then TYSHXYDM when ZZJGDM is not null then ZZJGDM when GSDJM is not null then GSDJM when SWDJH is not null then SWDJH when SFZH is not null then SFZH else '无效数据' end as USCC from TB_TJSYZSXQYHZB_XYZG t
这个时候,查询的数据则为
通用版本为:
select case when 统一社会信用代码 is not null then 统一社会信用代码 when 组织机构代码 is not null then 组织机构代码 when 工商登记码 is not null then 工商登记码 when 税务登记号 is not null then 税务登记号 when 居民身份证号 is not null then 居民身份证号 else '无效数据' end as USCC from 表名
这样可以避免查询数据只取一个字段的时候,查询的数据会遗漏。