지원되는 버전:현재 (18) / 17 / 16 / 15 / 14 / 13
개발 버전:개발
지원되지 않는 버전:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3
이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

F.16. 입니다

배트맨 토토모듈은 데이터 유형을 제공합니다. 다음 국제 제품 번호 지정 표준의 경우: EAN13, UPC, ISBN(도서), ISMN(음악) 및 ISSN(연재물). 숫자는 입력 시 확인되며 올바르게 하이픈이 연결됩니다. 출력.

F.16.1. 데이터 유형

표 F-9.배트맨 토토데이터 유형

데이터 유형 설명
EAN13 유럽 품목 번호, 항상 표시됨 EAN13 표시 형식
ISBN13 국제 표준 도서 번호 표시 새로운 EAN13 표시 형식
ISMN13 국제 표준 음악 번호 새로운 EAN13 표시 형식으로 표시됨
ISSN13 국제 표준 일련번호 새로운 EAN13 표시 형식으로 표시됨
ISBN 국제 표준 도서 번호 표시 이전의 짧은 표시 형식으로
ISMN 국제 표준 음악 번호 이전의 짧은 표시 형식으로 표시됨
ISSN 국제 표준 일련번호 이전의 짧은 표시 형식으로 표시됨
UPC 범용 제품 코드

몇 가지 참고사항:

  1. ISBN13, ISMN13, ISSN13 번호는 모두 EAN13입니다. 숫자.

  2. EAN13 번호가 항상 ISBN13, ISMN13 또는 ISSN13인 것은 아닙니다. (일부는 그렇습니다).

  3. 일부 ISBN13 번호는 ISBN으로 표시될 수 있습니다.

  4. 일부 ISMN13 번호는 ISMN으로 표시될 수 있습니다.

  5. 일부 ISSN13 번호는 ISSN으로 표시될 수 있습니다.

  6. UPC 번호는 EAN13 번호의 하위 집합입니다(그들은 기본적으로 첫 번째가 없는 EAN130숫자).

  7. 모든 UPC, ISBN, ISMN 및 ISSN 번호를 표시할 수 있습니다. EAN13 번호로.

내부적으로 이러한 모든 유형은 동일한 표현을 사용합니다( 64비트 정수)이며 모두 상호 교환 가능합니다. 다양한 유형 표시 형식을 제어하고 허용하기 위해 제공됩니다. 다음을 의미하는 입력의 더 엄격한 유효성 검사 특정 유형의 숫자입니다.

ISBN, ISMN, 그리고ISSN유형은 짧은 내용을 표시합니다 가능할 때마다 번호 버전(ISxN 10) 에 맞지 않는 숫자에 대해 ISxN 13 형식을 표시합니다. 짧은 버전.EAN13, ISBN13, ISMN13그리고ISSN13유형은 항상 긴 버전을 표시합니다. ISxN(EAN13)의 내용입니다.

F.16.2. 출연진

배트맨 토토모듈은 다음을 제공합니다. 다음 유형 캐스트 쌍:

  • ISBN13 <= EAN13

  • ISMN13 <= EAN13

  • ISSN13 <= EAN13

  • ISBN <= EAN13

  • ISMN <= EAN13

  • ISSN <= EAN13

  • UPC <= EAN13

  • ISBN <= ISBN13

  • ISMN <= ISMN13

  • ISSN <= ISSN13

다음에서 전송하는 경우EAN13다른 사람에게 유형의 경우 값이 다음 범위 내에 있는지 런타임 검사가 있습니다. 다른 유형의 도메인이며 그렇지 않은 경우 오류가 발생합니다. 는 다른 캐스트는 단순히 라벨을 다시 붙인 것입니다. 성공했습니다.

F.16.3. 함수 및 연산자

배트맨 토토모듈은 다음을 제공합니다. 표준 비교 연산자, btree 및 해시 인덱싱 이러한 모든 데이터 유형을 지원합니다. 그 외에도 여러 가지가 있습니다 전문 기능; 에 표시됨표 F-10. 이 표에서는,배트맨 토토모듈의 데이터 중 하나를 의미합니다. 유형.

표 F-10.배트맨 토토함수

기능 반품 설명
배트맨 토토_weak(부울) 부울 약한 입력 모드 설정(새 설정 반환)
배트맨 토토_weak() 부울 약한 모드의 현재 상태를 가져옵니다
make_valid(배트맨 토토) 배트맨 토토 잘못된 숫자를 확인합니다(잘못된 숫자를 지웁니다) 플래그)
is_valid(배트맨 토토) 부울 잘못된 플래그가 있는지 확인합니다.

약함모드는 다음을 수행하는 데 사용됩니다. 테이블에 잘못된 데이터를 삽입합니다. 유효하지 않음은 검사 숫자를 의미합니다. 숫자가 누락된 것이 아니라 잘못된 것입니다.

왜 약한 모드를 사용하시겠습니까? 글쎄, 그럴 수도 있지 엄청난 양의 ISBN 번호가 있고 거기에 너무 많아서 이상한 이유로 일부는 잘못된 정보를 가지고 있습니다. 확인 숫자(아마도 숫자는 인쇄된 문서에서 스캔되었을 수 있습니다. 목록과 OCR에서 숫자가 잘못되었습니다. 아마도 숫자일 것입니다. 수동으로 캡처되었습니다...누가 알겠습니까). 어쨌든 요점은 너야 엉망진창을 정리하고 싶을 수도 있지만 여전히 할 수 있기를 원합니다. 데이터베이스에 모든 숫자를 저장하고 아마도 데이터베이스에서 유효하지 않은 숫자를 찾는 외부 도구 정보를 확인하고 더 쉽게 유효성을 검사할 수 있습니다. 그래서 예를 들어, 테이블.

약한 연산자를 사용하여 테이블에 유효하지 않은 숫자를 삽입할 때 모드에서는 수정된 수표와 함께 숫자가 삽입됩니다. 숫자이지만 느낌표와 함께 표시됩니다. (!) 마지막에 예를 들어0-11-000322-5!. 이 유효하지 않은 마커는 으로 확인했습니다.is_valid함수 및 다음으로 삭제됨make_valid함수.

또한 유효하지 않은 숫자를 강제로 삽입할 수도 있습니다. 약한 모드가 아닌 경우에는를 추가하여!숫자 끝에 문자가 있습니다.

또 다른 특별한 기능은 입력하는 동안 쓸 수 있다는 것입니다.?체크 숫자 대신 올바른 검사 숫자가 자동으로 삽입됩니다.

F.16.4. 예

--유형을 직접 사용:
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)를 선택하세요.

F.16.5. 참고문헌

이 모듈을 구현하기 위한 정보는 다음에서 수집되었습니다. 다음을 포함한 여러 사이트:

http://www.isbn-international.org/
   http://www.issn.org/
   http://www.ismn-international.org/
   http://www.wikipedia.org/

하이픈 연결에 사용되는 접두어도 컴파일되었습니다. 보낸 사람:

http://www.gs1.org/productssolutions/idkeys/support/prefix_list.html
   http://www.isbn-international.org/en/identifiers.html
   http://www.ismn-international.org/ranges.html

알고리즘을 생성하는 동안 주의를 기울였으며 제안된 내용과 비교하여 꼼꼼하게 검증되었습니다. 공식 ISBN, ISMN, ISSN 사용자 매뉴얼의 알고리즘.

F.16.6. 작성자

게르만 멘데스 브라보(크로누즈), 2004 - 2006

이 모듈은 Garrett A. Wollman의 isbn_issn에서 영감을 받았습니다. 코드.