REGEXP_REPLACE 不同
REGEXP_REPLACE with DISTINCT
我正在尝试将 distinct 与 REGEXP_REPLACE 结合使用,但返回了 0 行。
我在 MySQLP v8.0
中创建了一个测试 table
CREATE TABLE phone(
id serial primary key,
phone_number char(25));
INSERT INTO phone (phone_number)
VALUES ('(423) 330-9999');
INSERT INTO phone (phone_number)
VALUES ('(423)3309999');
INSERT INTO phone (phone_number)
VALUES ('423-330-1111)');
INSERT INTO phone (phone_number)
VALUES ('1-423-330-6666');
INSERT INTO phone (phone_number)
VALUES ('1A423*330*1111');
INSERT INTO phone (phone_number)
VALUES ('5553301111');
-- 然后
select
REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm') as clean_phone
from phone
--- 工作正常 ->
clean_phone
4233309999
4233309999
4233301111
14233306666
14233301111
5553301111
--- 计数
select
count(REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm')) as
clean_phone
from phone
--- 工作正常 ->
clean_phone
6
-- 不同 clean_phone
select
distinct(REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm')) as
clean_phone
from phone
--- returns 空 ->
clean_phone
我不明白为什么 distinct 不起作用?
Distinct 不是一个函数,因此您不需要 distinct() 而只需要 distinct
select distinct REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm') as
clean_phone
from phone
.
select distinct clear_phone from(
select REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm') clear_phone
from phone ) t
如果错误仍然存在,您可以尝试使用 insert/select ofn a dummy table
insert into dummy_table(clear_phone)
select REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm')
from phone;
select distinct clear_phone from dummy_table;
我正在尝试将 distinct 与 REGEXP_REPLACE 结合使用,但返回了 0 行。
我在 MySQLP v8.0
中创建了一个测试 table CREATE TABLE phone(
id serial primary key,
phone_number char(25));
INSERT INTO phone (phone_number)
VALUES ('(423) 330-9999');
INSERT INTO phone (phone_number)
VALUES ('(423)3309999');
INSERT INTO phone (phone_number)
VALUES ('423-330-1111)');
INSERT INTO phone (phone_number)
VALUES ('1-423-330-6666');
INSERT INTO phone (phone_number)
VALUES ('1A423*330*1111');
INSERT INTO phone (phone_number)
VALUES ('5553301111');
-- 然后
select
REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm') as clean_phone
from phone
--- 工作正常 -> clean_phone 4233309999 4233309999 4233301111 14233306666 14233301111 5553301111
--- 计数
select
count(REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm')) as
clean_phone
from phone
--- 工作正常 -> clean_phone 6
-- 不同 clean_phone
select
distinct(REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm')) as
clean_phone
from phone
--- returns 空 -> clean_phone
我不明白为什么 distinct 不起作用?
Distinct 不是一个函数,因此您不需要 distinct() 而只需要 distinct
select distinct REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm') as
clean_phone
from phone
.
select distinct clear_phone from(
select REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm') clear_phone
from phone ) t
如果错误仍然存在,您可以尝试使用 insert/select ofn a dummy table
insert into dummy_table(clear_phone)
select REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm')
from phone;
select distinct clear_phone from dummy_table;