Вы можете использовать replace
для нормализации чисел на лету.
select *
from mytable
where replace(phone, '+1', '') != replace(number, '+1', '')
Проблема здесь в том, что replace('+1', phone, '')
и replace('+1', number, '')
не будут проиндексированы, что приведет к полное сканирование таблицы. Если вам нужно сделать это только один раз, это может быть хорошо. Если вы делаете это часто, это плохо, и вместо этого вам следует нормализовать данные.
Нормализация ваших данных устраняет подобные двусмысленности и подводные камни. Это упрощает и ускоряет ваши запросы, поскольку они в большей степени могут использовать преимущества индексации.
В этом случае либо добавьте, либо удалите (возможно, добавьте) код страны из своих телефонных номеров. Выполните нормализацию как в сохраненных данных, так и во всех вводимых данных.
update mytable
set phone = concat('+1', phone)
where phone not like '+%';
update mytable
set number = concat('+1', number)
where number not like '+%';
Теперь проверка тривиальна.
select *
from mytable
where phone != number;