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ư
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