Если вы хотите искать в varchar, используйте LIKE
, это поможет вам в использовании выражений.Например, в вашем случае phone_column = '() -'
будет phone_column LIKE '() -%'
, это будет соответствовать любой строке, которая начинается с () -
.если вы сделаете phone_column = '() -'
, тогда она будет соответствовать только той же самой строке.
В любом случае, я не уверен, почему вы хотите пойти по этому пути, в то время как вы можете проверить текущие числа и попытаться сохранить толькодействительные, так как хранение неверных номеров будет бесполезным.
Я приведу вам пример: для проверки телефонных номеров вы сначала удалите все существующие форматы (круглые скобки, тире, пробелы), а затем получите целое число из 10 или 7 цифр.зависит от вашего способа хранения телефонных номеров.любые числа меньше этого будут недействительными.
Чтобы удалить форматы:
SELECT REPLACE(REPLACE(REPLACE(REPLACE(Number,'(',''),')',''),'-',''),' ','')
Теперь у вас будут только цифры, с которыми будет легче работать.
Примерно так:
SELECT
phone_column
FROM (SELECT REPLACE(REPLACE(REPLACE(REPLACE(phone_column,'(',''),')',''),'-',''),' ','') phone_column FROM client_table) D
PS: номера телефонов некоторых стран начинаются с 0, если ваши номера не начинаются с 0, то вы переводите номер в BIGINT,который удалит все начальные нули.
Теперь вы можете использовать регистр для проверки чисел и делать с ними все что угодно.
SELECT
CASE
WHEN LEN(phone_column) = 10
THEN '(' + SUBSTRING(phone_column,1,3) + ') ' + SUBSTRING(phone_column, 3,3) + '-' + SUBSTRING(phone_column, 6,4)
ELSE '(000) 000-0000'
END Phone
FROM (SELECT REPLACE(REPLACE(REPLACE(REPLACE(phone_column,'(',''),')',''),'-',''),' ','') phone_column FROM client_table) D