sql 字符串相加问题,替换问题

来源:百度知道 编辑:UC知道 时间:2024/05/02 02:19:08
我现在有个表Table1,身份证FieldID(变量类型,18位长度)错误,都是A+17位数字,需要把身份证前边改成510121+出生年月日,出生日期FieldDate是日期格式,如1988-8-8,

NAME FieldID FieldDate
安九珠 A26121219020301 1970-9-12

变成

NAME FieldID FieldDate
安九珠 510121197009120301 1970-9-12

数据太多,求助大家,谢谢啊!

我以前更换前8位用的是
UPDATE Table1
SET FieldID = REPLACE(FieldID, LEFT(FieldID, 8), '51012119')
WHERE (FieldID NOT LIKE '510121%')
现在要和出生日期FieldDate 关联,求助大家!谢谢,希望详细一点!
要求低一些的话,至少要包出生日期FieldDate的前4位更新在身份证FieldID 里边,谢谢!
1楼的朋友,我的'51012119' + 198888只有14位,意思是后边几位不变!UPDATE Table1
SET FieldID = '510121'||to_char(FieldDate,'yyyymmdd')||substr(FieldID,12,4) where length(FieldID)=15;
提示|附近有语法错误 yyyymmdd附近有语法错误
(1989-10-5,1985-5-10表中日期是这样记录的datatime类型!)

好多SQL里边有的不支持||,
UPDATE Table1
SET FieldID = '510121' + CONVERT(char(8), FieldDate, 112) + RIGHT(FieldID,4)
WHERE (FieldID LIKE '51012119%')
避免重复!

UPDATE Table1
SET FieldID = '510121'||to_char(FieldDate,'yyyymmdd')||substr(FieldID,12,4) where length(FieldID)=15;

注,这个串没有18位那么长.......不过方法应该这样

update Table1
SET FieldID = '510121' + convert(char(8),FieldDate,112)+right(FieldId,4)

UPDATE Table
SET FieldID = '510121'||to_char(FieldDate,'yyyymmdd')||substr(FieldID,12,4) where FieldID like 'A%'

但是你的'51012119' + 198888只有14位啊?