, .
Oracle sqlfiddle: http://sqlfiddle.com/#!4/cd66c/1
Oracle
UPDATE studentdetails sd
SET sd.UserName =
(SELECT to_char(x.UserID) || '_' || sa.AccCode
FROM
(SELECT sd1.ID as ID, SUBSTR(sd1.UserName, INSTR( sd1.UserName,'_') + 1, INSTR( sd1.UserName,'_', INSTR( sd1.UserName,'_') + 1) - 1 - INSTR( sd1.UserName,'_')) AS UserID
FROM studentdetails sd1
) x INNER JOIN studentaccess sa ON TO_NUMBER(x.UserID) = sa.UserID where sd.ID = x.ID
);
SQL Server
UPDATE studentdetails
SET UserName =
(SELECT x.UserID + '_' + sa.AccCode
FROM
(SELECT SUBSTRING(sd1.UserName, CHARINDEX('_', sd1.UserName) + 1, CHARINDEX('_', sd1.UserName, CHARINDEX('_', sd1.UserName) + 1) - 1 - CHARINDEX('_', sd1.UserName)) AS UserID
FROM studentdetails sd1
WHERE sd1.ID = studentdetails.ID) x
INNER JOIN studentaccess sa ON x.UserID = sa.UserID);
1
, , UNKNOWN UserName studentdetails, studentaccess , studentdetails.
sqlfiddle, sqlfiddle - . , , . - .
UPDATE studentdetails sd
SET sd.UserName =
(SELECT CASE when x.ID is null then 'UNKNOWN' else to_char(x.UserID) || '_' || sa.AccCode END
FROM
(SELECT sd1.ID as ID, SUBSTR(sd1.UserName, INSTR( sd1.UserName,'_') + 1, INSTR( sd1.UserName,'_', INSTR( sd1.UserName,'_') + 1) - 1 - INSTR( sd1.UserName,'_')) AS UserID
FROM studentdetails sd1
) x RRIGHT OUTER JOIN studentaccess sa ON TO_NUMBER(x.UserID) = sa.UserID where sd.ID = x.ID
);