Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Vật lộn với cơ sở dữ liệu MySQL của số điện thoại

Điều này rất kỳ lạ, tôi đã tự mình đấu tranh với vấn đề này nhiều lần, trong 15 năm qua và thường nghĩ ra các cấu trúc tách mã vùng, mã quốc gia và số thành các trường riêng biệt, v.v. Nhưng trong khi đọc câu hỏi của bạn, một giải pháp khác vừa xuất hiện trong đầu tôi, nó yêu cầu một trường riêng biệt mặc dù vậy có thể không phù hợp với bạn.

Bạn có thể có một trường riêng biệt được gọi là reverse_phone_number, để công cụ DB tự động điền vào trường này, sau đó khi mọi người tìm kiếm chỉ cần đảo ngược chuỗi tìm kiếm và sử dụng trường đảo ngược được lập chỉ mục chỉ với một% ở cuối chuỗi tương tự, do đó cho phép sử dụng chỉ mục.

Phụ thuộc vào công cụ DB của bạn, bạn có thể tạo chỉ mục dựa trên một chức năng do người dùng xác định, chức năng này thực hiện ngược lại giúp bạn loại bỏ nhu cầu về trường bổ sung.

Ở một số quốc gia, ví dụ:Vương quốc Anh, bạn có thể gặp sự cố với các số 0 ở đầu. Số điện thoại ở Vương quốc Anh được thể hiện dưới dạng (mã vùng) (Số điện thoại), ví dụ:01634 511098, khi mã này được quốc tế hóa, số 0 đứng đầu của mã vùng sẽ bị xóa và mã quay số quốc tế (+ hoặc 00) và mã quốc gia (44) được thêm vào. Điều này dẫn đến số điện thoại quốc tế là +441634511098. Bất kỳ người dùng nào tìm kiếm 0163451109 sẽ không tìm thấy số điện thoại nếu nó được nhập ở định dạng quốc tế. Bạn có thể khắc phục sự cố này bằng cách xóa các số 0 ở đầu khỏi chuỗi tìm kiếm.

CHỈNH SỬA Dựa trên các đề xuất từ ​​Ollie Jones, bạn nên lưu trữ số như được nhập bởi người dùng và sau đó loại bỏ các số 0 ở đầu, dấu chấm câu và khoảng trắng khỏi số trước khi đảo ngược và lưu trữ trong trường đã đảo ngược. Sau đó, chỉ cần sử dụng cùng một thuật toán để tách chuỗi tìm kiếm trước khi đảo ngược, tìm bản ghi và sau đó hiển thị lại số đã nhập ban đầu cho người dùng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách lưu trữ ngày trong cơ sở dữ liệu MySQL?

  2. Đặt hàng kết quả biểu mẫu Mysql nhóm theo

  3. Cách sử dụng chuỗi .format () trong câu lệnh MySQL?

  4. pdo chuẩn bị báo cáo với ký tự đại diện

  5. Làm cách nào để tôi có thể Chèn dữ liệu vào Cơ sở dữ liệu MySQL?