MySQL 데이터베이스에 전화 번호를 저장하는 방법은 무엇입니까?
중복 가능성 :
텔레 프네 번호 및 주소에 대한 mysql 데이터 유형
전화 번호를 DB에 저장하는 모범 사례에 대한 제안이 있습니까? 미국 전화 번호를 고려하십시오.
- 555555 1212
- 555-555-1212
- (555) 555 1212
- 5555551212
- 1-555-555-1212
- 1 (555) 555-1212
- 등등 ...
서식을 제거하고 숫자 만 저장해야합니까? 하나의 필드 만 사용해야합니까? 아니면 국가 코드, 지역 번호, 전화 번호 등으로 분할해야합니까? 제안?
- 모두 varchar로 (숫자가 아니라 "숫자 모음")
- 국가 + 지역 + 번호 별도
- 모든 국가에 지역 코드가있는 것은 아닙니다 (예 : 내가있는 몰타).
- 일부 국가에서는 내부 전화를 걸 때 지역 번호에서 선행 0을 삭제합니다 (예 : 영국).
- 클라이언트 코드의 형식
형식으로 값을 저장해서는 안됩니다. 사용자 기본 설정에 따라보기에서 형식을 지정해야합니다.
형식이 혼합 된 전화 번호를 검색하는 것은 거의 불가능합니다.
이 경우 필드로 분할하고 정수로 저장합니다. 숫자는 텍스트보다 빠르며 숫자를 분할하고 인덱스를 추가하면 모든 종류의 쿼리가 빠르게 실행됩니다.
선행 0은 문제가 될 수 있지만 그렇지 않을 수도 있습니다. 스웨덴에서는 모든 지역 번호가 0으로 시작하며 국가 번호를 입력하면 제거됩니다. 그러나 0은 실제로 숫자의 일부가 아니며 지역 번호를 추가하고 있음을 알리는 데 사용되는 표시기입니다. 국가 코드와 동일하게 00을 추가하여 카운티 코드를 사용한다고 말합니다.
선행 0은 저장해서는 안되며 필요할 때 추가해야합니다. 데이터베이스에 00을 저장하고 +로만 작동하는 서버를 사용한다고 가정하면 해당 응용 프로그램에 대해 00을 +로 바꿔야합니다.
따라서 숫자를 숫자로 저장하십시오.
서식없이 varchar에 숫자를 저장하는 것이 좋습니다. 그런 다음 클라이언트 측에서 적절하게 숫자 형식을 다시 지정할 수 있습니다. 일부 문화권에서는 전화 번호를 다르게 쓰는 것을 선호합니다. 프랑스에서는 01-22-33-44-55와 같은 전화 번호를 씁니다.
보고있는 번호로 알아 내기가 어려울 수 있으므로 전화 번호가있는 국가에 대한 다른 필드를 저장하는 것도 고려할 수 있습니다. 영국은 11 자리 긴 숫자를 사용하고 일부 아프리카 국가에서는 7 자리 긴 숫자를 사용합니다.
즉, 저는 영국 전화 회사에서 일했으며 영국 또는 국제 전화 번호를 기반으로 데이터베이스에 전화 번호를 저장했습니다. 따라서 영국 전화 번호는 02081234123이고 국제 전화 번호는 001800300300입니다.
varchar, 구분 문자를 저장하지 마십시오. 용도에 따라 전화 번호의 형식을 다르게 지정할 수 있습니다. 그래서 (619) 123-4567을 6191234567로 저장합니다. 저는 전화 번호부 데이터로 작업하고 이것이 가장 좋은 방법이라는 것을 알게되었습니다.
나는 전화 번호에 varchar를 제안하고 (전화 번호는 유지하는 것이 중요한 선행 0을 가지고 있기 때문에) 두 필드에 전화 번호를 가지고 있습니다.
국가 코드 및 전화 번호 즉, 004477789787
CountryCode = 44 및 전화 번호 = 77789787을 저장할 수 있습니다.
그러나 매우 응용 프로그램에 따라 다를 수 있습니다. 예를 들어 미국 번호 만 저장하고 "특정 지역에서 모든 번호 가져 오기"와 같은 쿼리를 신속하게 수행하는 기능을 유지하려는 경우 전화 번호 필드를 추가로 분할하고 국가 코드 필드를 그대로 삭제할 수 있습니다. 불필요한)
나는 이것을하는 일반적인 옳고 그른 방법이 있다고 생각하지 않는다. 그것은 정말로 요구에 달려 있습니다.
varchar 유형의 열에 숫자로 저장하는 것이 좋습니다 (컨트리 코드 등).
이 형식은 사용자와 상호 작용할 때 적용되어야합니다. 예를 들어 형식 변경을 더 쉽게 설명 할 수 있고 특히 도움이됩니다. 귀하의 응용 프로그램이 국제화되면 ...
내 관점을 형성하면 아래에 내 제안이 있습니다.
- 전화 번호를 단일 필드에 varchar로 저장하고 분할해야하는 경우 검색 후 그에 따라 분할합니다.
- 숫자로 저장하면 앞의 0이 잘 리므로 항상 varchar로 저장하십시오.
- 테이블에 삽입하기 전에 사용자 전화 번호를 확인합니다.
허용하려는 문자로 구성된 확장 영숫자로 숫자를 저장하고 varchar (32) 또는 이와 유사한 곳에 저장할 것을 제안합니다. 모든 공백, 대시 등을 제거하십시오. 전화 번호의 형식을 별도의 필드에 입력하십시오 (로케일 환경 설정에서 수집 할 수 있음). 확장을 지원하려면 별도의 필드에 추가해야합니다.
I would definitely split them. It would be easy to sort the numbers by area code and contry code. But even if you're not going to split, just insert the numbers into the DB in one certain format. e.g. 1-555-555-1212 Your client side will be thankfull for not making it reformat your numbers.
You can use varchar for storing phone numbers, so you need not remove the formatting
I would say store them as an big integer, as a phone number itself is just a number. This also gives you more flexibility in how you present your phone numbers later, depending on what situation you are in.
참고URL : https://stackoverflow.com/questions/8284647/how-to-store-phone-numbers-on-mysql-databases
'program tip' 카테고리의 다른 글
연속 메모리가있는 C ++ 벡터에 해당하는 C #? (0) | 2020.10.19 |
---|---|
Java Collections singletonMap 메소드는 언제 사용합니까? (0) | 2020.10.19 |
Powershell에서 부모의 부모 디렉터리를 얻는 방법은 무엇입니까? (0) | 2020.10.18 |
Javascript, setTimeout 루프? (0) | 2020.10.18 |
C가 강력하게 입력 되었습니까? (0) | 2020.10.18 |