Яка хороша структура даних для зберігання телефонних номерів у полях бази даних? Я шукаю щось, що є досить гнучким для обробки міжнародних номерів, а також те, що дозволяє ефективно запитувати різні частини номера.
Редагувати: Просто для роз’яснення варіанту використання тут: Зараз я зберігаю номери в одному полі varchar, і залишаю їх так само, як їх ввів клієнт. Потім, коли номер потрібен коду, я його нормалізую. Проблема полягає в тому, що якщо я хочу запитати кілька мільйонів рядків, щоб знайти відповідні телефонні номери, це передбачає функцію, наприклад
where dbo.f_normalizenum(num1) = dbo.f_normalizenum(num2)
що страшенно неефективно. Крім того, запити, які шукають такі речі, як код міста, стають надзвичайно складними, коли це лише одне поле varchar.
[Редагувати]
Люди зробили тут багато гарних пропозицій, дякую! В якості оновлення, ось що я роблю зараз: я все ще зберігаю номери точно так, як вони були введені, у полі varchar, але замість того, щоб нормалізувати речі під час запиту, у мене є тригер, який робить все, що працює, коли вставляються записи або оновлений. Отже, у мене є ints або bigints для будь-яких частин, які мені потрібні, і ці поля індексуються для швидшого виконання запитів.