Я пытаюсь использовать отдельные с REGEXP_REPLACE, и возвращается 0 строк.
Я создал тестовую таблицу в MySQLP v8.0.
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
--- работает нормально -> чистый_телефон 4233309999 4233309999 4233301111 14233306666 14233301111 5553301111
--- считать
select
count(REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm')) as
clean_phone
from phone
--- работает нормально -> чистый_телефон 6
-- отдельный clean_phone
select
distinct(REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm')) as
clean_phone
from phone
--- возвращает пусто -> чистый_телефон
Я не понимаю, почему не работает различение?






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 into dummy_table(clear_phone)
select REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm')
from phone;
select distinct clear_phone from dummy_table;
попробуйте не использовать db-fiddle .. это может быть ошибкой для этого инструмента .. я также добавил тест, основанный на выборе, отличном от подвыборки .. и последний тест на основе вставки/выбора в фиктивной таблице ..
я начал подозревать ошибку с db-fiddle! Спасибо за вашу помощь.
Пробовал, все равно возвращает пусто. Используя это для тестирования db-fiddle.com db:MySSQL v8.0 Это прекрасно работает, выберите REGEXP_REPLACE(phone_number, '[^0-9]', '',1, 0, 'm') как clean_phone с телефона Добавление отдельного, как вы предложили еще не возвращает строк.