Làm cách nào để định dạng số điện thoại trong SQL?

Giờ mình dùng cột số điện thoại của bảng đó thì truy vấn  chạy rất lâu. và  rắc rối. There are other phone numbers of different format say 78878787893, jfhj489343, ,00000000000,8888449944,888@gmail4444,456-963-5689,456-#465-456464-sdhfgsjgfsdfksjfjsdhfsj@@dlkfjdk ,456-#465-456464-sdhfgsjg657576564575757fsdfksjfjsdhfsj@@

vì vậy Nó phải xử lý bất kỳ số nào theo cách thích hợp và chức năng phải hiệu quả để xử lý tất cả các số từ bảng số điện thoại

Vui lòng đề xuất xem mã ở trên cho định dạng số điện thoại mà tôi cho là ở định dạng Hoa Kỳ có đúng không ?? .   

Cảm ơn trước



Định dạng này jfhj489343 được nhập từ ứng dụng và có trong bảng. Khi tôi kiểm tra với khách hàng, họ nói rằng các định dạng như vậy sẽ được nhập mặc dù không phải là số định dạng điện thoại phù hợp mà nên có các số lý tưởng như

[541] 754-3010Trong nước+1-541-754-3010Quốc tế1-541-754-3010Gọi tại Mỹ001-541-754-3010Gọi từ Đức

 

Nhưng việc giới hạn dữ liệu và cách dữ liệu được chấp nhận vào ứng dụng nằm ngoài tầm kiểm soát của chúng tôi.
Trong SQL, tôi đã sử dụng hàm  trên để xử lý bất kỳ loại dữ liệu nào như vậy. Nếu không phải SQL  thì tôi muốn biểu thức SSRS xử lý bất kỳ loại dữ liệu nào và hiển thị ở định dạng số của Hoa Kỳ khi chúng tôi sử dụng Báo cáo SSRS 2012. Tôi sẽ ánh xạ cột này trong SSRS. Cho đến nay SSRS không xử lý dữ liệu đó mặc dù được chuyển đổi sang các định dạng khác.
Một số dữ liệu đã được xử lý và một số dữ liệu không thành công trong báo cáo SSRS.

Vì vậy, SQL đã tự sửa lỗi ở cấp nguồn để xử lý NULL, khoảng trống , bất kỳ loại ký tự rác nào hoặc @#$ ,,và @yahoo. com và @gmauil. com

Cảm ơn các bậc tiền bối. Tôi đã hy vọng có thể sử dụng biểu thức mặt nạ [như tôi đã thấy trong nhiều chủ đề để định dạng dữ liệu, tiền tệ, v.v. ] đại loại như ###-###-#### nhưng có vẻ như điều đó là không thể, vì vậy thay vào đó tôi đã sử dụng phương pháp TRÁI PHẢI và thực hiện một tuyên bố trường hợp cho từng trường số điện thoại, đại loại như thế này

[Trường hợp KHI Số điện thoại không giống '%-%' và Số điện thoại Không giống '' THÌ TRÁI[Số điện thoại, 3] + '-' + SUBSTRING[Số điện thoại, 3, 3] + '-' + PHẢI[Số điện thoại, 4] KHÁC Số điện thoại

Nó chỉ cảm thấy như quá mức cần thiết, nhưng có lẽ đó là lựa chọn tốt nhất của tôi. Cảm ơn cho đầu vào, một lần nữa

Q. Cách tốt nhất để hiển thị số điện thoại được lưu trữ thô [không có bất kỳ định dạng hoặc dấu phân cách nào] và hiển thị số đó ở định dạng phổ biến, chẳng hạn như '[xxx] xxx-xxxx'

Tôi biết đây là một cái đã xuất hiện nhiều lần trên internet và trong khi tôi có một số cách để làm điều này bây giờ tôi muốn xem liệu có cách nào tốt hơn để làm điều này không thì một trong 2 phương pháp chúng tôi

PHƯƠNG PHÁP 1. Sử dụng Chuỗi con [] – Tôi đã tìm thấy điều này được liệt kê nhiều lần trong các diễn đàn và bài báo trên internet

CHỌN T. sPhoneNum1 AS 'Số điện thoại - Nguyên/Chưa định dạng',

'[' + Chuỗi con [T. sPhoneNum1,1,3] + '] '

+ Xâu con[T. sPhoneNum1,4,3] + '-'

+ Xâu con[T. sPhoneNum1,7,4] NHƯ 'Định dạng số điện thoại'

TỪ [CHỌN '9991112222' NHƯ 'sPhoneNum1'] T

PHƯƠNG PHÁP 2. Sử dụng Stuff[] – Cá nhân tôi thích cái này vì nó liên quan đến 1 hàm chuỗi ít hơn và ít chuỗi nối hơn phương thức đầu tiên

CHỌN T. sPhoneNum1 AS 'Số điện thoại - Nguyên/Chưa định dạng',

'[' + Nội dung [Nội dung [T. sPhoneNum1,7,0,'-'],4,0,'] '] AS 'Định dạng số điện thoại'

TỪ [CHỌN '9991112222' NHƯ 'sPhoneNum1'] T

Bây giờ, ở trên được thiết kế cho các số ở Hoa Kỳ bao gồm tối đa một mã vùng và số địa phương gồm 7 chữ số và do đó, nó có thể không hoạt động đối với các số bên ngoài Hoa Kỳ. Có ai biết cách hiệu quả hơn để lấy số điện thoại được lưu trữ thô và trả về định dạng như thế này không?

CHỨC NĂNG DROP fn_MaskPhoneAndFAX

ĐI

TẠO CHỨC NĂNG fn_MaskPhoneAndFAX [@PhoneFAX VARCHAR[40] , @ReturnType CHAR[3] ]

TRẢ LẠI VARCHAR[255]

/***************************************************

Tác giả. Lạnh lùngDBA

Tạo ngày. 2011-06-01

Sự miêu tả. Điều này sẽ lấy một chuỗi số điện thoại hoặc số fax và tạo ra

đầu ra bị che khuất hoặc các bộ phận cấu thành

Thuật toán được sử dụng ở đây giả sử một chuỗi số điện thoại không có ký tự không phải chữ số

Tham số đầu vào

@PhoneFAX. Số điện thoại hoặc số FAX được che dấu

@ReturnType. Cờ xác định kết quả sẽ được trả về ở định dạng nào

TXT = Số sẽ được trả về dưới dạng chuỗi ẩn, ví dụ: [613] 555-5555 [12345]

XML = Tên sẽ được trả về dưới dạng một đoạn XML được định dạng tốt với các nút Mã vùng, Số điện thoại và Ext

Giá trị trả về

VARCHAR[255]

***************************************************

BẰNG

BẮT ĐẦU

TUYÊN BỐ

@PhoneFAX_Masked VARCHAR[255],

@StringLength INT

-- khởi tạo biến

LỰA CHỌN

@StringLength = DATALENGTH[@PhoneFAX]

NẾU @ReturnType = 'TXT'

BẮT ĐẦU

NẾU @StringLength IN [10, 13, 14, 15]

CHỌN @PhoneFAX_Masked =

'['

+ SUBSTRING[@PhoneFAX, 1 ,3]

+ ']'

+ SUBSTRING[@PhoneFAX, 4 ,3]

+ '-'

+ SUBSTRING[@PhoneFAX, 7 ,4]

NẾU @StringLength IN [13, 14, 15]

CHỌN @PhoneFAX_Masked = @PhoneFAX_Masked

+ ' máy lẻ '

+ SUBSTRING[@PhoneFAX, 11 ,5]

NẾU @StringLength KHÔNG TRONG [10, 13, 14, 15]

CHỌN @PhoneFAX_Masked = @PhoneFAX

CHẤM DỨT

KHÁC NẾU @ReturnType = 'XML'

BẮT ĐẦU

NẾU @StringLength IN [10, 13, 14, 15]

CHỌN @PhoneFAX_Masked =

''

+ ''

+ SUBSTRING[@PhoneFAX, 1 ,3]

+ ''

+ ''

+ SUBSTRING[@PhoneFAX, 4 ,3]

+ '-'

+ SUBSTRING[@PhoneFAX, 7 ,4]

+ ''

+ ''

+ TRƯỜNG HỢP

KHI @StringLength IN [13, 14, 15] THÌ SUBSTRING[@PhoneFAX, 11 ,5]

KHÁC ''

CHẤM DỨT

+ ''

+ ''

CHẤM DỨT

TRỞ LẠI @PhoneFAX_Masked

CHẤM DỨT

ĐI

Tôi nên lưu trữ số điện thoại trong SQL như thế nào?

1 câu trả lời. Chúng tôi sử dụng varchar[15] và chắc chắn lập chỉ mục trên trường đó.

Làm cách nào để xác thực số điện thoại trong SQL?

Số điện thoại di động phải là. .
dài 10 chữ số
Không thể bắt đầu bằng 1 hoặc 0 [Ví dụ:. 1144684679 hoặc 04468-4679
Không thể chứa tất cả các chữ số giống nhau. Ví dụ. 5555555555

Chủ Đề