Update 语句的问题

英文字母打字员 2013-03-25 12:44:09
数据如下:

A1 A2 A3 A4
1010 null 1010 null
1020 null 1030 1040

字段拼接为A1=:A1+'-'+A2+'-'+A3+'-'+A4
当字段为NULL的时候 是不要拼接进来的
要把A1 改成 数据如下:


第一条数据格式为:
1010-1010
第二条格式为:
1020-1030-1040

求个UPDATE的语句


...全文
134 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
pard521 2013-03-25
  • 打赏
  • 举报
回复
引用 6 楼 szm341 的回复:
你这是isnull(A1+'-',NULL)什么意思,isnull函数是判断null值的,你又转换成null值? 我以为A1值可能不为null呢,如果所有值都可能为null的话,建议写成 update tb set A1=substring(isnull('-'+A1,'')+isnull('-'+A2,'')+isnull('-'+A3,'')+isnull('……
顶起!
szm341 2013-03-25
  • 打赏
  • 举报
回复
你这是isnull(A1+'-',NULL)什么意思,isnull函数是判断null值的,你又转换成null值? 我以为A1值可能不为null呢,如果所有值都可能为null的话,建议写成 update tb set A1=substring(isnull('-'+A1,'')+isnull('-'+A2,'')+isnull('-'+A3,'')+isnull('-'+A4,''),2,10000) 10000这个参数只要设置一个较大值就可以了
Midke 2013-03-25
  • 打赏
  • 举报
回复
多条Update语句 update tb set A1=A1 where A1 is not null update tb set A1=A1+'-'+A2 where A2 is not null update tb set A1=A1+'-'+A3 where A3 is not null update tb set A1=A1+'-'+A4 where A4 is not null 放回A1列的话 只能执行一次
  • 打赏
  • 举报
回复
引用 2 楼 szm341 的回复:
update tb set A1=A1+isnull('-'+A2,'')+isnull('-'+A3,'')+isnull('-'+A4,'')
不太对啊 如果我现在改成 A3=isnull(A1+'-',NULL)+isnull(A2+'-',NULL)+ISNULL(A3+'-',NULL)+ISNULL(A4,NULL) 输出的结果怎么会是-1010-1010 A1 字段的值是为空的啊
chuanzhang5687 2013-03-25
  • 打赏
  • 举报
回复

create table tb
(
	A1	nvarchar(100),
	A2	nvarchar(100),
	A3	nvarchar(100),
	A4 nvarchar(100)
)
insert into tb values('1010',null,'1010',null)
insert into tb values('1020',null,'1030','1040')



update tb set A1 = A1 + 
case when isnull(A2,'') = '' then '' else '-' + A2 end +
case when isnull(A3,'') = '' then '' else '-' + A3 end+
case when isnull(A4,'') = '' then '' else '-' + A4 end


select * from tb
drop table tb
/*A1 A2 A3 A4
1010-1010 NULL 1010 NULL
1020-1030-1040 NULL 1030 1040

(2 行受影响)

szm341 2013-03-25
  • 打赏
  • 举报
回复
update tb set A1=A1+isnull('-'+A2,'')+isnull('-'+A3,'')+isnull('-'+A4,'')
  • 打赏
  • 举报
回复
中午睡觉去了 没人回答吗?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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