这个替换怎么写?

joejoe1991 2010-06-16 09:26:52
表中有一字段为cardnum, 身份证号。
不过现在里面的数据有点混乱, 有大量错误的身份证号在里面。
比如0000000000000 (0的个数不确定) 或者cardnum全是 空格。。

现在要求把这些错误的全都替换成NULL 怎么写啊?
只替换00000000 (N个0) 和全空格的情况 ,别的情况不用考虑。
谢谢。
...全文
123 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
宇峰科技 2010-06-18
  • 打赏
  • 举报
回复
如果有正则,验证一下,然后不符合的全部update掉
xiaoqin8012 2010-06-18
  • 打赏
  • 举报
回复
update tb
set cardnum=null
where cardnum like '0%' or cardnum=''
TheGodOfGods 2010-06-17
  • 打赏
  • 举报
回复

if object_id('tb') IS NOT NULL
DROP TABLE tb
GO
Create TABLE tb(cardnum varchar(18))
INSERT INTO tb
SELECT '000000000000000000' UNION ALL
SELECT ' ' UNION ALL
SELECT '400800400880080800'
SELECT * FROM tb
/*
cardnum
------------------
000000000000000000

400800400880080800

(3 行受影响)
*/
UPDATE tb SET cardnum =case when REPLACE(LTRIM(RTRIM(cardnum)),'0','')='' THEN NULL
else cardnum
END
/*
cardnum
------------------
NULL
NULL
400800400880080800

(3 行受影响)
*/
brownhwy 2010-06-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 sych888 的回复:]
if object_id('tbReplace') IS NOT NULL
DROP TABLE tbReplace
GO
Create TABLE tbReplace(cardnum varchar(18))
INSERT INTO tbReplace
SELECT '000000000000000000' UNION ALL
SELECT ' ' UNION ALL
SELE……
[/Quote]
好象不对吧?忘了考虑身份证号末尾是x的情况了吧?
sych888 2010-06-17
  • 打赏
  • 举报
回复
if object_id('tbReplace') IS NOT NULL
DROP TABLE tbReplace
GO
Create TABLE tbReplace(cardnum varchar(18))
INSERT INTO tbReplace
SELECT '000000000000000000' UNION ALL
SELECT ' ' UNION ALL
SELECT '400800400880080800'
SELECT * FROM tbReplace where cast(cardnum as bigint)=0

update tbReplace set cardnum=null where cast(cardnum as bigint)=0
dawugui 2010-06-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 joejoe1991 的回复:]
表中有一字段为cardnum, 身份证号。
不过现在里面的数据有点混乱, 有大量错误的身份证号在里面。
比如0000000000000 (0的个数不确定) 或者cardnum全是 空格。。

现在要求把这些错误的全都替换成NULL 怎么写啊?
只替换00000000 (N个0) 和全空格的情况 ,别的情况不用考虑。
谢谢。
[/Quote]
update tb set col = null
where col = '00000000' or col = ''
--小F-- 2010-06-16
  • 打赏
  • 举报
回复
update
table
set
column =case when replace(column,0,'') is null then '' else column
liuxinfu12 2010-06-16
  • 打赏
  • 举报
回复
Update table Set Column=Case When Replace(column,'0','')='' then Null End
joejoe1991 2010-06-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 rucypli 的回复:]

update table
set column =
case when replace(RTRIM(LTRIM(column))),0,'') is null then '' else column
[/Quote]
服务器: 消息 174,级别 15,状态 1,行 3
replace 函数要求有 3 个参数。
rucypli 2010-06-16
  • 打赏
  • 举报
回复
update table
set column =
case when replace(RTRIM(LTRIM(column))),0,'') is null then '' else column
joejoe1991 2010-06-16
  • 打赏
  • 举报
回复
环境sql server 2000

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧