Số điện thoại dài nhất trên toàn thế giới có thể tôi nên xem xét trong SQL varchar (chiều dài) cho điện thoại là bao nhiêu


200

Số điện thoại dài nhất trên toàn thế giới có thể tôi nên xem xét trong SQL varchar(length)cho điện thoại.

cân nhắc:

  • + cho mã quốc gia
  • () cho mã vùng
  • x + 6 số cho tiện ích mở rộng (vì vậy hãy tạo số 8 {dấu cách})
  • khoảng trắng giữa các nhóm (tức là trong điện thoại của Mỹ + x xxx xxx xxxx = 3 dấu cách)
  • Đây là nơi tôi cần sự giúp đỡ của bạn, tôi muốn nó có mặt trên toàn thế giới

Hãy xem xét rằng trong trường hợp cụ thể của tôi bây giờ, tôi không cần thẻ, v.v. số bắt đầu bằng mã quốc gia và kết thúc bằng phần mở rộng, không có nhận xét Fax / Điện thoại, v.v., cũng không cần gọi thẻ nội dung.


1
Tôi nghĩ rằng việc chuyển đổi số thành giá trị dài sẽ là một giải pháp tốt và nó sẽ chỉ cần dung lượng 64 bit, tôi đã sử dụng số này trong nhiều năm, không có vấn đề gì


1
@MattDiPasquale đã được đề cập ở đây , nhưng cảm ơn!
Shimmy Weitzhandler

2
Đúng, nhưng câu trả lời đó không bao gồm liên kết tôi đưa ra. Không có gì. :-)
ma11hew28

Câu trả lời:


79

Xem xét kỹ lưỡng không có sự khác biệt về chi phí giữa một varchar (30) và varchar (100) nếu bạn chỉ lưu trữ 20 ký tự trong mỗi ký tự, hãy thận trọng và chỉ làm cho nó 50.


26
Chỉ cần cho kiến ​​thức: vậy khi IS có bất kỳ chi phí nào? vui lòng bao gồm một nguồn trong câu trả lời của bạn, để chúng tôi có thể tiếp tục và tìm hiểu những điều cơ bản từ nó.
Shimmy Weitzhandler

6
Tôi biết đó là trường hợp, nhưng không phải lúc nào cũng vậy. Trong MySQL (ví dụ) toàn bộ chiều dài được sử dụng để sắp xếp. Tốt nhất là áp dụng ít nhất một số nỗ lực tối thiểu.
Morgan Tocker

15
Không có sự khác biệt về kích thước lưu trữ giữa hai kích thước cột. Rất có khả năng là một chi phí chung, đáng kể hoặc khác, tùy thuộc vào cơ sở dữ liệu cụ thể của bạn. Ví dụ, SQL Server mất rất nhiều khả năng dự đoán kích thước trang dữ liệu và tối ưu hóa truy cập và căn chỉnh. Như mọi khi, kiểm tra.
Matt Enright

16
Tối ưu hóa sớm là gốc rễ của mọi tội lỗi.
Harindaka

78
Tổng quát hóa cao hơn thậm chí còn tồi tệ hơn. Thiết kế một hệ thống với tối ưu hóa trong tâm trí là không bao giờ ác mỗi se - tối ưu hóa trở nên ác khi một dành một lượng quá nhiều thời gian để hiệu quả không cần thiết, không gây chú ý và nhỏ.
jbowman

167

Giả sử bạn không lưu trữ những thứ như '+', '()', '-', không gian và những gì bạn có (và tại sao bạn, chúng là những mối quan tâm mang tính thay đổi dựa trên phong tục địa phương và phân phối mạng dù sao), khuyến nghị ITU-T E.164 cho mạng điện thoại quốc tế (mà hầu hết các mạng quốc gia được kết nối qua) chỉ định rằng toàn bộ số (bao gồm mã quốc gia, nhưng không bao gồm các tiền tố như tiền tố gọi quốc tế cần thiết để quay số, thay đổi từ quốc gia này sang quốc gia khác, cũng không bao gồm các hậu tố, chẳng hạn như số mở rộng tổng đài) tối đa là 15 ký tự .

Tiền tố cuộc gọi phụ thuộc vào người gọi, không phải callee và do đó không nên (trong nhiều trường hợp) được lưu trữ bằng số điện thoại. Nếu cơ sở dữ liệu lưu trữ dữ liệu cho sổ địa chỉ cá nhân (trong trường hợp lưu trữ tiền tố cuộc gọi quốc tế có ý nghĩa), thì tiền tố quốc tế dài nhất bạn phải xử lý ( theo Wikipedia ) hiện có 5 chữ số, ở Phần Lan.

Đối với hậu tố, một số tổng đài hỗ trợ mở rộng tối đa 11 chữ số (một lần nữa, theo Wikipedia ). Vì các số mở rộng của PBX là một phần của gói quay số khác (Tổng đài tách biệt với các tổng đài của các công ty điện thoại), nên các số mở rộng cần được phân biệt với các số điện thoại, bằng ký tự phân cách hoặc bằng cách lưu trữ chúng trong một cột khác.


5
Nếu bạn không lưu trữ các ký tự định dạng (như '+', '(', ')', '-' và '') và bạn đang lưu trữ số từ các quốc gia khác nhau, bạn có thể muốn thêm một cột để chỉ định dạng loại số khi số được hiển thị.
Đã xem

38
Dòng dưới cùng: 15ký tự. Nếu lưu trữ tiền tố và hậu tố, dòng dưới cùng là: 5 + 15 + 11 = 31.
AlikElzin-kilaka

3
@MattEnright, tôi nghĩ bạn nên cập nhật nhận xét của AlikElzin trong câu trả lời của bạn.
Shimmy Weitzhandler

4
'+' không phải là trình bày en.wikipedia.org/wiki/List_of_i
quốc_call_prefixes

17

Trong thông số kỹ thuật GSM 3GPP TS 11.11 , có 10 byte được đặt sang một bên trong MSISDN EF (6F40) cho 'số quay số'. Vì đây là đại diện GSM của một số điện thoại và việc sử dụng của nó không bị tráo đổi, (và luôn có khả năng là dấu ngoặc đơn) nên có 22 ký tự dữ liệu.

Theo kinh nghiệm của tôi, chỉ có một ví dụ về dấu ngoặc đơn đóng / mở, đó là lý do của tôi cho điều trên.


10

Tệ hơn một chút, tôi sử dụng thẻ gọi cho các cuộc gọi quốc tế, vì vậy số địa phương của nó trong tài khoản US + # (6 chữ số) + pin (4 chữ số) + "tạm dừng" + những gì bạn mô tả ở trên.

Tôi nghi ngờ có thể có trường hợp khác


2
Bạn có một điểm rất tốt. Tôi đã thêm một vài dòng vào tin nhắn của mình, xin vui lòng đọc
Shimmy Weitzhandler

10
Tuy nhiên, việc gọi lại thẻ gọi không nên có trong cơ sở dữ liệu - đây là phần được thêm khi quay số theo quy tắc quay số. Các số được lưu trữ phải ở dạng ISO, không có bất kỳ thông tin liên quan đến quay số nào.
TomTom
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.