SQL 从另一列的前 9 位数字更新表列

问题描述 投票:0回答:1

我有一个 USER 表,其中一列包含 SSN,另一列包含 SSN +5 位数字(我们可以称之为 SSNPLUS)。某些行的 SSN 源已损坏,因此我想仅针对那些受影响的行从另一列的一部分更新 SSN。

示例问题

SSN       SSNPLUS
012345678 01234567899221   <--this is valid
888888888 88888888854221   <--this is valid
56ABCJ    07512333800998   <--SSN col is invalid because of alpha chars
992345678 99234567877112   <--this is valid
81AJUNK   01526690966772   <--SSN col is invalid because of alpha chars 
098765432 09876543288992   <--this is valid

Desired Result

SSN       SSNPLUS
012345678 01234567899221   
888888888 88888888854221   
075123338 07512333800998   
992345678 99234567877112   
015266909 01526690966772    
098765432 09876543288992   

用某种伪语言来说,我想我想做的是这样的:

update USER set USER.ssn select left(ssnplus, 9) from USER.ssnplus where ssn contains [A-Z]

你可以看到我不是一个 SQL 人员,我想在其中添加一个正则表达式,但我猜这在这个应用程序中不起作用;非常感谢任何帮助,因为我们的数据库人员尚未被替换!呃!

sql regex sql-update
1个回答
0
投票

以下 SQL 应该适用于大多数 RDBMS:

UPDATE USER 
  SET ssn = LEFT(ssnplus, 9)
WHERE ssn <> LEFT(ssnplus, 9)
;
© www.soinside.com 2019 - 2024. All rights reserved.