Если ваша таблица небольшая, вы можете удалить номера с телефонных номеров, а затем проверить длину. Функции для этого варьируются от базы данных к базе данных. Вот как вы можете сделать это в MySQL с regexp_replace
.
select column_a, column_b
from employees
where length(regexp_replace(phone_number, '[^[:digit:]]', '')) = 10
Это хорошо для небольших столов. Если ваша таблица большая, это может привести к проблемам с производительностью. Поскольку он рассчитан, он должен сканировать каждую строку. Один из способов справиться с этим - добавить сгенерированный столбец , который нормализует номер телефона.
alter table employees
add column phone_number_normalized varchar(20)
generated always as (
regexp_replace(phone_number, '[^[:digit:]]', '')
)
stored;
create index phone_number_normalized on employees (phone_number_normalized);
Это добавляет столбец phone_number_normalized
, автоматически сгенерированный из phone_number
, и сохраняет только цифры. И это индексирует это. Тогда ваш запрос и другие запросы станут проще и эффективнее.
select column_a, column_b
from employees
where length(phone_number_normalized) = 10
Наконец, если вы много работаете с телефонными номерами, вместо того, чтобы хранить их в виде строки, вы можете wi sh для их анализа. и положить их на свой стол. Затем вы можете хранить такие вещи, как код страны, код города и т. Д.