[超难] 如何修改表中一个字段的记录?送100分!!! [ms sql]

sxl6159078 2005-06-27 12:34:21
我有一个表
表名:jd_jmjkda
字段:jmjkdah(12个字符(数字)(前6个字符一样)(后六个不一样))

表中记录有N条。
我想通过一条UPDATE语句,把记录前6位是000000,改成010101.
请高手赐教。

如:
000000456123 --> 010101456123

000000...... 010101......
000000...... 010101......

000000156123 --> 010101156123
...全文
186 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
filebat 2005-06-27
  • 打赏
  • 举报
回复
--测试数据
if object_id('jd_jmjkda') is not null drop table jd_jmjkda
go
create table jd_jmjkda( id int, value char(12))
insert jd_jmjkda select 1, '000000456123'
union all select 2, '000000456124'
union all select 3, '000010456125'
union all select 4, '000000456126'
--查看修改前的数据
select* from jd_jmjkda
--修改
update jd_jmjkda
set value='010101'+substring(value, 7, 6)
where substring(value, 1, 6)='000000'
--查看修改后的数据
select* from jd_jmjkda
pbsql 2005-06-27
  • 打赏
  • 举报
回复
update jd_jmjkda set jmjkdah=stuff(jmjkdah,1,6,'010101') where left(jmjkdah,6)='000000'
filebat 2005-06-27
  • 打赏
  • 举报
回复
update里用一个字符串函数就应该可以了。
正在写代码
U2U2U2U2 2005-06-27
  • 打赏
  • 举报
回复
update jd_jmjkda set jmjkdah=stuff(jmjkdah,1,6,'010101') where left(jmjkdah,6)='000000'
tdtjjiao 2005-06-27
  • 打赏
  • 举报
回复
这也叫超难??zzzzzzzzzzzzzZZZZZZZZZZZ~~~~~~~~~~
pbsql 2005-06-27
  • 打赏
  • 举报
回复
update jd_jmjkda set jmjkdah=stuff(jmjkdah,1,6,'010101') where left(jmjkdah,6)='000000'

该语句本身不可能报那样的错,检查你的程序,看是不是触发器引起的错
sxl6159078 2005-06-27
  • 打赏
  • 举报
回复
MINDNET(风)

update jd_jmjkda
set jmjkdah=substring(jmjkdah,1,6)='010700' + right(jmjkdah,6)
^ ^ 这里怎么会两等号
where substring(jmjkdah) = '010101'


tjficcbw(津津)
UPDATE jd_jmjkda SET valuestring = REPLACE(valuestring ,'000000', '010101')

违反了 PRIMARY KEY 约束 'PK__jd_jmjkda__1FB8AE52'。不能在对象 'jd_jmjkda' 中插入重复键。
sxl6159078 2005-06-27
  • 打赏
  • 举报
回复
TO: winny1982()

刚才发错了
应该是
update jd_jmjkda
set value=case when substring(value, 1, 6)='000000' then '010101'+substring(value, 7, 6) else value end


error:

数据类型 int 对于函数 substring 无效。允许的类型为: char/varchar、nchar/nvarchar 和 binary/varbinary。
sxl6159078 2005-06-27
  • 打赏
  • 举报
回复
to:
pbsql(风云)
update jd_jmjkda set jmjkdah=stuff(jmjkdah,1,6,'010101') where left(jmjkdah,6)='000000'

子查询返回的值多于一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。
tjficcbw 2005-06-27
  • 打赏
  • 举报
回复
UPDATE jd_jmjkda SET valuestring = REPLACE(valuestring ,'000000', '010101')
tjficcbw 2005-06-27
  • 打赏
  • 举报
回复
UPDATE jd_jmjkda SET valuestring = REPLACE(valuestring ,'000000', '010101')
tjficcbw 2005-06-27
  • 打赏
  • 举报
回复
create table jd_jmjkda( id int, valuestring char(12))
insert jd_jmjkda select 1, '000000456123'
union all select 2, '000000456124'
union all select 3, '000000456125'
union all select 4, '000000456126'


UPDATE jd_jmjkda SET valuestring = REPLACEvaluestring ,'000000', '010101')
MINDNET 2005-06-27
  • 打赏
  • 举报
回复
update jd_jmjkda
set column = substring(column,1,6) = '010101' + right(column,6)
where substring(column) = '000000'
winny1982 2005-06-27
  • 打赏
  • 举报
回复
刚才发错了
应该是
update jd_jmjkda
set value=case when substring(value, 1, 6)='000000' then '010101'+substring(value, 7, 6) else value end
winny1982 2005-06-27
  • 打赏
  • 举报
回复

update jd_jmjkda
set value=case value when '000000' then '010101'+substring(value, 7, 6) else value end

34,587

社区成员

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

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