sql 查询语句,关于某个字段位数判断。

比如,在某个个人信息表中,有些身份证号录入错误,不为15位或者18位,将这些错误的证件号码(zjhm)列出,怎么编写。
select *
from tabname
where zjhm???????

这里的where如何编写?
谢谢大家,忘了说了,zjhm是字符型的。数据库是informix的

1、首先我们准备一个数据表。

2、然后表中的字段如下图所示。

3、接着我们用COL_LENGTH函数进行字段的判断。

4、然后点击执行按钮。

5、接下来我们就可以看到输入了下图的内容,代表是存在的。

6、当然我们还可以写Else的分支语句,在里面添加不存在时候的逻辑。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-28
查询出zjhm长度不是15也不是18位的记录如下
sql server
select *
from tabname
where len(zjhm) <> 15 and len(zjhm) <> 18 and

mysql
SELECT *
FROM tabname
WHERE LENGTH(zjhm) <> 15 AND LENGTH(zjhm) <> 18 AND

对informix不了解,len,LENGTH都试试吧,不行的话,只能等人来解答了本回答被提问者采纳
第2个回答  2011-03-20
SELECT * FROM `tabname` WHERE `zjhm` NOT BETWEEN '这里填1后面加14个0' AND '这里填9后面加14个9' AND `zjhm` NOT BETWEEN '这里填1后面加17个0' AND '这里填9后面加17个9' ';
这破百度不让我写那么长的数字,我只能用文字形式告诉你了!
为什么这样写呢,因为如果非15位的身份证号肯定不在'1后面加14个0' 和 '9后面加14个9' 之间数字,非18位的身份证号肯定不在'1后面加17个0' 和 '9后面加17个9' 之间数字
第3个回答  2011-03-20
select *
from tabname
where zjhm='?????'
这样应该OK的,祝你好运了
相似回答