用sql获得指定记录的空段数目和字段名称--实在想不通,这种场景应用在哪

1)表结构如下

现在查询第四条记录

1)demo

2)查询有几个为null或者‘’的字段,跟预期一样,两个1,说明两个字段为null或者‘’

3)求和吧--得到为空的字段数目

4)查出空字段,的字段名

/*
`IF`(expr1,expr2,expr3)三目运算符,参数1,为真,返回参数2,否则返回参数3
在这里,参数1为null或者‘‘为真, 我们让他返回1
*/
select
sum(
    IF(ISNULL(name)||LENGTH(trim(name))<1,1,0) +
    IF(ISNULL(idCard)||LENGTH(trim(idCard))<1,1,0)+
    IF(ISNULL(tel)||LENGTH(trim(tel))<1,1,0) +
    IF(ISNULL(cardNum)||LENGTH(trim(cardNum))<1,1,0) +
    IF(ISNULL(bankName)||LENGTH(trim(bankName))<1,1,0) +
    IF(ISNULL(balance)||LENGTH(trim(balance))<1,1,0)
) as ‘空字段数目‘,
CONCAT(
IF(ISNULL(name)||LENGTH(trim(name))<1,‘name,‘,‘‘) ,
    IF(ISNULL(idCard)||LENGTH(trim(idCard))<1,‘idCard,‘,‘‘),
    IF(ISNULL(tel)||LENGTH(trim(tel))<1,‘tel‘,‘‘) ,
    IF(ISNULL(cardNum)||LENGTH(trim(cardNum))<1,‘cardNum,‘,‘‘) ,
    IF(ISNULL(bankName)||LENGTH(trim(bankName))<1,‘bankName,‘,‘‘) ,
    IF(ISNULL(balance)||LENGTH(trim(balance))<1,‘balance‘,‘‘)
) as ‘空字段名‘
from
    bankinfor
where id=4

有没有更好的方法?

原文地址:https://www.cnblogs.com/coisini/p/9800826.html

时间: 2024-10-26 19:23:32

用sql获得指定记录的空段数目和字段名称--实在想不通,这种场景应用在哪的相关文章

Django与SQL语言中——NULL与空字符串的区别

SQL有指定空值的独特方式,它把空值叫做NULL. Null在数据库中表示 不知道的数据,主要有3种意思: 1)知道数据存在,但不知道具体值. 2)不知道数据是否存在. 3)数据不存在. 在SQL中, NULL的值不同于空字符串,就像Python中None不同于空字符串("")一样.这意味着某个字符型字段(如VARCHAR)的值不可能同时包含NULL和空字符串. 这会引起不必要的歧义或疑惑. 为什么这条记录有个NULL,而那条记录却有个空字符串? 它们之间有区别,还是数据输入不一致?

使用MS sql CDC功能记录用户登录情况

本文部分内容转载自:追踪记录每笔业务操作数据改变的利器--SQLCDC http://www.cnblogs.com/artech/archive/2010/11/20/cdc.html SharePoint foundation使用form user的认证方式.最近企业开始了等保测评.其中有两个整改意见比较头疼: 1.账号使用强壮型密码验证 2.用户登录需要有审计日志 第一点,formuser里通过webconfig的设置参数达到效果,具体可以看之前我的一篇文章 SqlMembership参数

ExtJS4.2 Grid知识点六:自动选中指定记录、自动选中全部记录、反向选择

本节主要学习ExtJS4.2 Grid自动选中指定记录.自动选中全部记录.反向选择,即在表格Grid加载数据后自动将符合条件的记录行选中,示例图片: 示例代码  /  在线演示 本例是通过监听Grid的afterrender事件来实现自动选择指定记录行,代码如下实现自动选中性别为男性的记录行: 自动选中指定记录代码 'userlist': {     afterrender: function(testGrid){//侦听goodslistview渲染           // 选中所有记录  

sql语句查询同一表内多字段同时重复的记录 sql数据库重复记录删除

分享下用sql语句删除数据库中重复记录的方法.比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完全相同的记录查询出来select p1.* from persons p1,persons p2 where p1.id<>p2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address可以实现上述效果.几个删除重复记录的SQL语句 1.用rowid方法2.用gr

SQL按指定文字顺序进行排序(中文或数字等)

在有些情况下我们需要按指定顺序输出数据,比如选择了ID in(3,1,2,5,4)我们希望按这个3,1,2,5,4的顺序输出,这样只使用order by ID是无法实现的, 但是我们可以使用order by charindex(','+convert(varchar,ID)+',',',3,1,2,5,4,')的方法来实现这个目的.举例如下: Create Table info( ID int identity(1,1) not null, title varchar(100) not null

Apache不指定记录文件日志

编辑虚拟主机配置文件 在Errorlog和Customlog中间加入不指定记录文件日志的格式, 如下所示: ErrorLog "lam.com-error_log" SetEnvIf Resquest_URI ".*\.gif$" image-request SetEnvIf Resquest_URI ".*\.jpg$" image-request SetEnvIf Resquest_URI ".*\.png$" image

如何通过outline为SQL语句指定执行计划

创建测试表 以用户jyu连接,创建测试表 SQL> conn jyu/jyu; Connected. SQL> create table t (id number, name varchar2(100)); Table created. SQL> insert into t select rownum,object_name from dba_objects; 47391 rows created. SQL> commit; Commit complete. 创建索引 SQL>

关于pl/sql打开后database为空的问题解决办法

前置条件:楼主是在虚拟机里面进行安装oracle和pl/sql的,所以我的安装后,发现我的pl/sql显示的database是空的,当然楼主会检查我的tnsnames.ora是不是配置正确了,但是检查后发现是正常的,依然显示database是空的,报错页面如图1. 图1 然后下面说下解决办法. 1.由于之前虚拟机磁盘空间不足,楼主就去新增了一个E盘,所以我的oracle是装在E盘的,但是我的instantclient_11_2是装在虚拟机的C盘的,此处应该同步. 保证和之前安装的oracle在同

创建指定大小的空文件

1 BOOL CreateFileDemo(TCHAR* pFileName, DWORD dwSize) 2 { 3 HANDLE hFile; 4 HANDLE hMapFile; 5 6 hFile = CreateFile( 7 pFileName, 8 GENERIC_WRITE | GENERIC_READ, 9 FILE_SHARE_READ, 10 NULL, 11 CREATE_ALWAYS, 12 FILE_ATTRIBUTE_NORMAL, 13 NULL 14 ); 15