Mysql
 sql >> база данни >  >> RDS >> Mysql

Борба с MySQL база данни с телефонни номера

Това е много странно, аз самият съм се борил с този проблем много пъти през последните 15 години и като цяло измислям структури, които разделят кодове на региони, кодове на държави и номера в отделни полета и т.н. Но докато четях въпроса ви, току-що се появи друго решение в главата ми, изисква отделно поле, въпреки че може да не е подходящо за вас.

Бихте могли да имате отделно поле, наречено reverse_phone_number, да го попълните автоматично от DB машината, а след това, когато хората търсят, просто обръщат низа за търсене и използват индексираното поле за обратна връзка само с % в края на подобен низ, като по този начин позволяват използването на индекс.

В зависимост от вашата DB машина може да сте в състояние да създадете индекс на базата на дефинирана от потребителя функция, която прави обратното вместо вас, премахвайки необходимостта от допълнително поле.

В някои страни, напр. Обединеното кралство, може да имате проблем с водещите нули. Телефонен номер в Обединеното кралство е представен като (код на региона) (телефонен номер), напр. 01634 511098, когато се интернационализира, водещата нула от кода на областта се премахва и се добавят международният код за набиране (+ или 00) и кодът на държавата (44). Това води до международен телефонен номер +441634511098. Всеки потребител, който търси 0163451109, няма да намери телефонния номер, ако е въведен в интернационален формат. Можете да преодолеете този проблем, като премахнете водещите нули от низа за търсене.

РЕДАКТИРАНЕ Въз основа на предложенията на Оли Джоунс трябва да съхраните числото, както е въведено от потребителя, и след това да премахнете водещите нули, препинателните знаци и белите интервали от числото, преди да обърнете и съхраните в обърнатото поле. След това просто използвайте същия алгоритъм, за да премахнете стринга за търсене, преди да обърнете, намерете записа и след това покажете първоначално въведения номер обратно на потребителя.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. phpMyAdmin - Грешка> Неправилен параметър за формат?

  2. Може ли атрибут да обозначава една таблица над друга?

  3. Как да копирам данни от една таблица в друга нова таблица в MySQL?

  4. Съкращаване на данни:Неправилна стойност за дата и час:''

  5. Как мога автоматично да конвертирам MySQL DDL в Oracle DDL?