Sql 使用单行查询更新

Sql 使用单行查询更新,sql,oracle,Sql,Oracle,我有大约数千条记录,我需要更新一个列,其中包含电话号码。我的表中有这样的电话号码(客户)- 12345678888-888-888,(888)-333-55555-555 但是,我需要用一个查询来更新列,这样所有的1000条记录都应该得到更新,并确保数据如下所示 (888)-333-5555 请告诉我解决方案。如果目标表中的每个电话号码确实有10位数字,按顺序,带有可变的paren和hyphens等,则两阶段regex替换可以重新格式化它 下面是一个例子,使用一个名为LOREM的表格,电话号码字

我有大约数千条记录,我需要更新一个列,其中包含电话号码。我的表中有这样的电话号码(客户)-

12345678888-888-888,(888)-333-55555-555

但是,我需要用一个查询来更新列,这样所有的1000条记录都应该得到更新,并确保数据如下所示

(888)-333-5555


请告诉我解决方案。

如果目标表中的每个电话号码确实有10位数字,按顺序,带有可变的paren和hyphens等,则两阶段regex替换可以重新格式化它

下面是一个例子,使用一个名为
LOREM
的表格,电话号码字段为
IPSUM

创建测试表:

CREATE TABLE LOREM(IPSUM VARCHAR2(32));
INSERT INTO LOREM VALUES ('1234567890');
INSERT INTO LOREM VALUES ('888-888-8888');
INSERT INTO LOREM VALUES ('(888)-333-5555');
COMMIT;
初始状态:

SELECT IPSUM 
FROM LOREM
ORDER BY 1 ASC;

            IPSUM
_________________
(888)-333-5555
1234567890
888-888-8888
然后进行更新。这有两个正则表达式替换。首先,它抛出任何不是数字的东西。然后将10位数字重新格式化为(####)-###-###

然后检查结果:

SELECT IPSUM
FROM LOREM
ORDER BY 1 ASC;

            IPSUM
_________________
(123)-456-7890
(888)-333-5555
(888)-888-8888


3 rows selected.

如果目标表中的每个电话号码确实按顺序有10位数字,并且带有可变的paren和hyphens等,则两阶段regex替换可以重新格式化它

下面是一个例子,使用一个名为
LOREM
的表格,电话号码字段为
IPSUM

创建测试表:

CREATE TABLE LOREM(IPSUM VARCHAR2(32));
INSERT INTO LOREM VALUES ('1234567890');
INSERT INTO LOREM VALUES ('888-888-8888');
INSERT INTO LOREM VALUES ('(888)-333-5555');
COMMIT;
初始状态:

SELECT IPSUM 
FROM LOREM
ORDER BY 1 ASC;

            IPSUM
_________________
(888)-333-5555
1234567890
888-888-8888
然后进行更新。这有两个正则表达式替换。首先,它抛出任何不是数字的东西。然后将10位数字重新格式化为(####)-###-###

然后检查结果:

SELECT IPSUM
FROM LOREM
ORDER BY 1 ASC;

            IPSUM
_________________
(123)-456-7890
(888)-333-5555
(888)-888-8888


3 rows selected.

是否希望数据库表中每一行的“电话号码”列的值完全相同?电话号码可以不同,但所有行(888)-888-8888的格式应相同。您正在询问如何用SQL编写更新语句,对吗?一个能完成你在文章中描述的任务的人,对吗?谢谢Jaspreet Singh。如果忽略了括号、连字符等,那么所有记录是否始终有10位数字,或者是否有11位、7位或其他国家代码等。数据是否统一包含10位数字?@Abra…是,我想写一条Update sql语句。是否希望数据库表中每一行的电话号码列的值都完全相同?电话号码可以不同,但所有行(888)-888-888的格式应该相同。您正在询问如何用sql编写Update语句,对吗?一个能完成你在文章中描述的任务的人,对吗?谢谢Jaspreet Singh。如果忽略了括号、连字符等,那么所有记录是否始终有10位数字,或者是否有11位、7位或其他国家代码等。数据是否统一包含10位数字?@Abra…是的,我想编写一个更新sql语句。感谢您提供的解决方案…如果可能,请您解释此代码-“[^0-9]{1,}”,NULL,1,0表示,第二个是“(\1)-\2-\3',1,0感谢您的解决方案…如果可能,请您解释一下此代码-”[^0-9]{1,}”,NULL,1,0表示什么,第二个是“(\1)-\2-\3',1,0”