NẾU bạn có thể thay đổi bảng (giả sử đó là SQL Server 2005 trở lên), bạn có thể thêm một cột được tính toán vào bảng của mình và duy trì nó. Cột này có thể chứa đại diện "đã được làm sạch" cho trường "phonenumber" của bạn.
Một cái gì đó như thế này:
create function dbo.CleanPhone(@phone varchar(100))
returns varchar(100)
with schemabinding
as begin
return
replace(replace(replace(replace(replace(replace(@phone, ' ', ''),
'-', ''), '(', ''), ')', ''), '-', ''), '+', '')
end
và sau đó:
alter table (yourtable)
add cleanedPhone as dbo.CleanPhone(Phone) persisted
Bây giờ, cột "CleanedPhone" của bạn sẽ luôn chứa phiên bản "đã được làm sạch" của số điện thoại của bạn - luôn có dạng như:555123456.
Vì đó là trường ĐƯỢC LẬP KIỆN, bạn cũng không phải chịu hình phạt về hiệu suất khi truy vấn - giá trị được tạo và lưu trữ trong bảng của bạn và có sẵn như một cột bình thường.
Về điều này, bây giờ bạn có thể truy vấn khá dễ dàng.
Marc