| PostgreSQL 9.3.25 문서 | ||||
|---|---|---|---|---|
| 이전 | PostgreSQL : 문서 : 9.3 : 추가 제공 배트맨 토토 | 부록 F. 추가 제공 모듈 | 다음 | |
그롤 토토모듈은 다음에 대한 데이터 유형을 제공합니다. 다음 국제 제품 번호 지정 표준: EAN13, UPC, ISBN(도서), ISMN(음악) 및 ISSN(연재물). 숫자는 하드 코딩된 접두사 목록에 따라 입력 시 유효성이 검사됩니다. 이 접두사 목록은 출력 시 숫자에 하이픈을 넣는 데에도 사용됩니다. 이후 새로운 접두사가 수시로 할당되며 접두사 목록 최신 버전이 아닐 수 있습니다. 이 버전의 향후 버전이 기대됩니다. 모듈은 하나 이상의 테이블에서 접두사 목록을 얻습니다. 필요에 따라 사용자가 쉽게 업데이트할 수 있습니다. 그러나 현재, 목록은 소스 코드를 수정해야만 업데이트할 수 있으며 재컴파일 중. 또는 접두사 유효성 검사 및 하이픈 넣기 이 모듈의 향후 버전에서는 지원이 중단될 수 있습니다.
표 F-12데이터를 보여줍니다 에서 제공하는 유형롤 토토모듈.
표 F-12.롤 토토데이터 유형
| 데이터 유형 | 설명 | 
|---|---|
| EAN13 | 유럽 품목 번호, 항상 EAN13 디스플레이에 표시됨 형식 | 
| ISBN13 | 국제 표준 도서 번호가 새 문서에 표시됩니다. EAN13 표시 형식 | 
| ISMN13 | 국제 표준 음악 번호가 새 문서에 표시됩니다. EAN13 표시 형식 | 
| ISSN13 | 국제 표준 일련번호가 표시됩니다. 새로운 EAN13 표시 형식 | 
| ISBN | 국제 표준 도서 번호가 이전 버전으로 표시됩니다. 짧은 표시 형식 | 
| ISMN | 국제 표준 음악 번호가 이전 버전으로 표시됩니다. 짧은 표시 형식 | 
| ISSN | 국제 표준 일련 번호가 표시됩니다. 이전의 짧은 표시 형식 | 
| UPC | 범용 제품 코드 | 
몇 가지 참고사항:
ISBN13, ISMN13, ISSN13 번호는 모두 EAN13 번호입니다.
EAN13 번호가 항상 ISBN13, ISMN13 또는 ISSN13인 것은 아닙니다(일부 입니다).
일부 ISBN13 번호는 ISBN으로 표시될 수 있습니다.
일부 ISMN13 번호는 ISMN으로 표시될 수 있습니다.
일부 ISSN13 번호는 ISSN으로 표시될 수 있습니다.
UPC 번호는 EAN13 번호의 하위 집합입니다(그들은 기본적으로 첫 번째가 없는 EAN130숫자).
모든 UPC, ISBN, ISMN 및 ISSN 번호는 EAN13으로 표시될 수 있습니다. 숫자.
내부적으로 이러한 모든 유형은 동일한 표현을 사용합니다( 64비트 정수)이며 모두 상호 교환 가능합니다. 여러 유형은 디스플레이 형식을 제어하고 더 엄격한 허용을 위해 제공됩니다. 하나를 나타내기로 되어 있는 입력의 유효성 검사 특정 유형의 숫자입니다.
그ISBN, ISMN및ISSN유형은 다음의 짧은 버전을 표시합니다. 가능할 때마다 숫자(ISxN 10)를 표시하고 ISxN 13을 표시합니다. 짧은 버전에 맞지 않는 숫자의 형식입니다.EAN13, ISBN13, ISMN13그리고ISSN13유형 항상 ISxN(EAN13)의 긴 버전을 표시합니다.
그롤 토토모듈은 다음을 제공합니다 유형 캐스트 쌍:
ISBN13 <= EAN13
ISMN13 <= EAN13
ISSN13 <= EAN13
ISBN <= EAN13
ISMN <= EAN13
ISSN <= EAN13
UPC <= EAN13
ISBN <= ISBN13
ISMN <= ISMN13
ISSN <= ISSN13
다음에서 전송하는 경우EAN13다른 유형으로, 값이 도메인 내에 있는지 런타임 검사가 있습니다. 다른 유형이며 그렇지 않은 경우 오류가 발생합니다. 다른 출연진은 단순히 라벨을 다시 지정하면 항상 성공할 것입니다.
그롤 토토모듈은 표준을 제공합니다 비교 연산자, B-트리 및 해시 인덱싱 지원 이러한 데이터 유형. 그 외에도 여러 전문 기능; 에 표시됨테이블 F-13. 이 표에서는,롤 토토다음 중 하나를 의미합니다. 모듈의 데이터 유형입니다.
표 F-13.롤 토토기능
| 기능 | 반품 | 설명 | 
|---|---|---|
롤 토토_weak(부울) | 
부울 | 약한 입력 모드 설정(새 설정 반환) | 
롤 토토_weak() | 
부울 | 약한 모드의 현재 상태를 가져옵니다 | 
make_valid(롤 토토) | 
롤 토토 | 잘못된 숫자를 확인합니다(잘못된 플래그 지우기) | 
is_valid(롤 토토) | 
부울 | 잘못된 플래그가 있는지 확인합니다. | 
약함모드를 삽입할 수 있도록 사용됩니다. 테이블에 잘못된 데이터가 있습니다. 유효하지 않음은 검사 숫자가 잘못되었음을 의미하며, 숫자가 누락된 것은 아닙니다.
왜 약한 모드를 사용하시겠습니까? 뭐, 그럴 수도 있지 당신은 엄청난 양의 ISBN 번호를 보유하고 있으며, 그들 중 많은 사람들이 이상한 이유로 잘못된 체크 숫자를 가지고 있습니다. (아마도 숫자는 인쇄된 목록과 OCR에서 스캔되었을 수 있습니다. 숫자를 잘못 입력했습니다. 숫자를 수동으로 입력했을 수도 있습니다. 캡처 ... 누가 알겠습니까). 어쨌든 요점은 당신이 원할 수도 있다는 것입니다 엉망진창을 정리하지만 여전히 모든 것을 가질 수 있기를 원합니다. 데이터베이스에 숫자를 저장하고 외부 도구를 사용하여 위치를 찾을 수도 있습니다. 데이터베이스에 잘못된 숫자가 있는지 확인할 수 있습니다. 정보를 더 쉽게 확인하고 검증합니다. 예를 들어 당신은 테이블에서 잘못된 숫자를 모두 선택합니다.
약한 모드를 사용하여 테이블에 유효하지 않은 숫자를 삽입하면,
숫자는 수정된 체크 숫자와 함께 삽입되지만
느낌표()와 함께 표시됩니다.!) 마지막에 예를 들어0-11-000322-5!. 이 잘못된 마커를 확인할 수 있습니다
와 함께is_valid함수 및
다음으로 삭제됨make_valid함수.
또한 다음과 같은 경우에도 유효하지 않은 숫자를 강제로 삽입할 수 있습니다. 약한 모드가 아닌, 다음을 추가하여!숫자 끝에 문자가 있습니다.
또 다른 특별한 기능은 입력하는 동안 쓸 수 있다는 것입니다.?체크 숫자 대신 올바른 검사 숫자가 자동으로 삽입됩니다.
--유형을 직접 사용:
SELECT isbn('978-0-393-04002-9');
SELECT isbn13('0901690546');
SELECT issn('1436-4522');
--주조 유형:
-- ean13에서 다른 유형으로만 변환할 수 있다는 점에 유의하세요.
-- 숫자는 대상 유형 영역에서 유효합니다.
-- 따라서 다음은 작동하지 않습니다: select isbn(ean13('0220356483481'));
-- 하지만 다음은 다음과 같습니다.
SELECT upc(ean13('0220356483481'));
SELECT ean13(upc('220356483481'));
--ISBN 번호를 보관할 단일 열이 있는 테이블을 만듭니다.
CREATE TABLE 테스트(id isbn);
테스트 값에 삽입('9780393040029');
--검사 숫자 자동 계산('?' 관찰):
테스트 값에 삽입('220500896?');
테스트 값에 삽입('978055215372?');
SELECT issn('3251231?');
SELECT ismn('979047213542?');
--약한 모드 사용:
SELECT is_weak(true);
테스트 값에 삽입('978-0-11-000533-4');
테스트 값에 삽입('9780141219307');
테스트 값에 삽입('2-205-00876-X');
SELECT is_weak(false);
SELECT id FROM test WHERE NOT is_valid(id);
업데이트 테스트 SET id = make_valid(id) WHERE id = '2-205-00876-X!';
SELECT * FROM 테스트;
테스트에서 isbn13(id)를 선택하세요.이 모듈을 구현하기 위한 정보는 다음에서 수집되었습니다. 다음을 포함한 여러 사이트:
하이픈 넣기에 사용된 접두어는 다음에서 컴파일되었습니다:
알고리즘을 생성하는 동안 주의를 기울였으며 제안된 알고리즘과 비교하여 꼼꼼하게 검증되었습니다. 공식 ISBN, ISMN, ISSN 사용자 매뉴얼.