이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : F.20. ISN - 국제 표준 수에 대한 데이터 유형 (젠 토토, EAN, UPC 등)버전 또는 위에 나열된 다른 지원 버전 중 하나를 선택하세요.

F.20. 입니다

isn모듈은 EAN13, UPC, ISBN(도서), ISMN(음악) 및 ISSN(연재물)과 같은 국제 제품 번호 지정 표준에 대한 데이터 유형을 제공합니다. 숫자는 하드 코딩된 접두사 목록에 따라 입력 시 유효성이 검사됩니다. 이 접두사 목록은 출력에서 숫자를 하이픈으로 묶는 데에도 사용됩니다. 새로운 접두사가 수시로 할당되므로 접두사 목록이 최신이 아닐 수 있습니다. 이 모듈의 향후 버전에서는 필요에 따라 사용자가 쉽게 업데이트할 수 있는 하나 이상의 테이블에서 접두사 목록을 얻을 수 있기를 바랍니다. 그러나 현재 목록은 소스 코드를 수정하고 다시 컴파일해야만 업데이트할 수 있습니다. 또는 이 모듈의 향후 버전에서 접두사 확인 및 하이픈 넣기 지원이 중단될 수 있습니다.

F.20.1. 데이터 유형

표 F.12에서 제공하는 데이터 유형을 표시합니다.isn모듈.

표 F.12. isn데이터 유형

데이터 유형 설명
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 번호의 하위 집합입니다(기본적으로 첫 번째 번호가 없는 EAN13입니다.0자리).

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

내부적으로 이러한 모든 유형은 동일한 표현(64비트 정수)을 사용하며 모두 상호 교환 가능합니다. 표시 형식을 제어하고 하나의 특정 유형의 토토 꽁 머니를 나타내는 것으로 예상되는 입력의 유효성 검사를 보다 엄격하게 허용하기 위해 여러 유형이 제공됩니다.

ISBN, ISMNISSNtypes는 가능할 때마다 토토 꽁 머니의 짧은 버전(ISxN 10)을 표시하고 짧은 버전에 맞지 않는 토토 꽁 머니에 대해 ISxN 13 형식을 표시합니다.EAN13, ISBN13, ISMN13그리고ISSN13유형은 항상 ISxN(EAN13)의 긴 버전을 표시합니다.

F.20.2. 출연진

isn모듈은 다음과 같은 유형 변환 쌍을 제공합니다.

  • ISBN13 <= EAN13

  • ISMN13 <= EAN13

  • ISSN13 <= EAN13

  • ISBN <= EAN13

  • ISMN <= EAN13

  • ISSN <= EAN13

  • UPC <= EAN13

  • ISBN <= ISBN13

  • ISMN <= ISMN13

  • ISSN <= ISSN13

다음에서 전송하는 경우EAN13다른 유형으로 변경하면 값이 다른 유형의 도메인 내에 있는지 런타임 검사가 이루어지며 그렇지 않은 경우 오류가 발생합니다. 다른 캐스트는 항상 성공할 단순히 레이블을 다시 지정하는 것입니다.

F.20.3. 함수 및 연산자

isn모듈은 표준 비교 연산자와 이러한 모든 데이터 유형에 대한 B-트리 및 해시 인덱싱 지원을 제공합니다. 또한 몇 가지 특수 기능이 있습니다. 에 표시됨표 F.13. 이 표에서는,isn모듈의 데이터 유형 중 하나를 의미합니다.

표 F.13. isn기능

기능 반품 설명
isn_weak(부울) 부울 약한 입력 모드 설정(새 설정 반환)
isn_weak() 부울 약한 모드의 현재 상태를 가져옵니다
make_valid(isn) isn 잘못된 토토 꽁 머니를 확인합니다(잘못된 플래그 지우기)
is_valid(isn) 부울 잘못된 플래그가 있는지 확인합니다.

약함모드는 테이블에 유효하지 않은 데이터를 삽입하는 데 사용됩니다. 무효란 토토 꽁 머니가 누락된 것이 아니라 검사 토토 꽁 머니가 잘못되었음을 의미합니다.

왜 약한 모드를 사용하시겠습니까? 글쎄, ISBN 번호의 거대한 컬렉션이 있고 그 중 너무 많아서 이상한 이유로 일부 잘못된 확인 숫자가 있을 수 있습니다(아마도 숫자가 인쇄된 목록에서 스캔되었고 OCR에서 숫자가 잘못되었을 수도 있고 숫자가 수동으로 캡처되었을 수도 있습니다... 누가 알겠습니까). 어쨌든 요점은 혼란스러운 상황을 정리하고 싶을 수도 있지만 여전히 데이터베이스에 모든 숫자를 보관하고 외부 도구를 사용하여 데이터베이스에서 잘못된 숫자를 찾아 정보를 확인하고 더 쉽게 검증할 수 있기를 원한다는 것입니다. 예를 들어 표에서 잘못된 숫자를 모두 선택하려고 합니다.

약한 모드를 사용하여 테이블에 유효하지 않은 토토 꽁 머니를 삽입하면 해당 토토 꽁 머니는 수정된 검사 토토 꽁 머니와 함께 삽입되지만 느낌표()와 함께 표시됩니다.!) 마지막에 예를 들어0-11-000322-5!. 이 잘못된 마커는 다음을 통해 확인할 수 있습니다.is_valid함수 및 다음으로 삭제됨make_valid함수.

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

또 다른 특별한 특징은 입력하는 동안 쓸 수 있다는 것입니다.?검사 토토 꽁 머니 대신 올바른 검사 토토 꽁 머니가 자동으로 삽입됩니다.

F.20.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.20.5. 참고문헌

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

하이픈 넣기에 사용된 접두어는 다음에서 컴파일되었습니다:

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

F.20.6. 작성자

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

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