이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다PostgreSQL : 문서 : 17 : F.37. 스포츠 와이즈 토토 사이트 - 라인 세그먼트 또는 부동 소수점 간격에 대한 데이터 유형버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

F.30. 와이즈 토토

이 모듈은 데이터 유형을 구현합니다와이즈 토토라인 세그먼트 또는 부동 소수점 간격을 나타냅니다.와이즈 토토간격 엔드 포인트이므로 표현하는 데 특히 유용합니다 실험실 측정.

F.30.1. 이론적 해석

측정의 기하학은 일반적으로보다 복잡합니다 숫자 연속체의 한 지점. 측정은입니다 일반적으로 다소 퍼지 한계가있는 해당 연속체의 세그먼트. 측정은 불확실성으로 인해 간격으로 나옵니다 측정되는 값이 당연히 단백질의 안정성의 온도 범위.

상식 만 사용하면 저장하는 것이 더 편리합니다. 숫자 쌍보다는 간격과 같은 데이터. ~ 안에 연습, 심지어 대부분의 경우 더 효율적입니다 응용 프로그램.

상식의 선을 따라, 한계는 기존 숫자 데이터 유형의 사용을 제안합니다. 특정 정보 손실로 이어집니다. 이것을 고려하십시오 : 당신의 악기는 6.50을 읽고이 판독 값을 입력합니다. 데이터 베이스. 당신이 그것을 가져올 때 당신은 무엇을 얻습니까? 보다:

test = select 6.50 :: float8 as "ph";
 ph
---
6.5
(1 행)

측정 세계에서 6.50은 6.5와 다릅니다. 때로는 비판적으로 다를 수 있습니다. 실험자 일반적으로 그들이 신뢰하는 숫자를 기록하고 게시합니다. 6.50입니다 실제로 더 크고 심지어는 퍼지 간격 퍼지어 간격은 6.5로 중심 지점이 있습니다 (아마도) 그들이 공유하는 유일한 공통 기능. 우리는 확실히합니다 그러한 다른 데이터 항목이 동일하게 나타나기를 원하지 않습니다.

결론? 할 수있는 특수 데이터 유형을 갖는 것이 좋습니다. 임의로 변수로 간격의 한계를 기록하십시오 정도. 각 데이터 요소가 녹음한다는 의미에서 변수 고유 한 정밀도.

확인 :

test = 선택 '6.25 .. 6.50':: 와이즈 토토 as "ph";
          ph
------------
6.25 .. 6.50
(1 행)

F.30.2. 통사론

간격의 외부 표현은 사용하여 형성됩니다 범위 운영자가 결합 한 1 ~ 2 개의 부동 소수점 번호 (..또는...). 또는 중심점 플러스 또는 편차를 빼고. 선택적 확실성 지표 (<, and~)도 저장할 수 있습니다. (확실성 모든 내장 운영자가 표시기를 무시합니다. 하지만.)

in표 F-29, x, y델타부동 소수점 번호 표시.xandy하지만델타, 확실성이있을 수 있습니다 지시자.

표 F-29.와이즈 토토외부 표현

x 단일 값 (제로 길이 간격)
x .. y 간격xtoy
x(+-)델타 간격x - 델타tox+델타
x .. 하한이있는 개방 간격x
.. x 상한이있는 개방 간격x

표 F-30. 유효한 예와이즈 토토입력

5.0 제로 길이 세그먼트를 만듭니다 (포인트 할 것이다)
~ 5.0 제로 길이 세그먼트 및 레코드 생성~데이터에서.~에 의해 무시됩니다와이즈 토토운영이지만 a로 보존됩니다 논평.
<5.0 5.0에 포인트를 만듭니다.<무시되지만 a로 보존됩니다 논평.
5.0 5.0에서 지점을 만듭니다.무시되지만 a로 보존됩니다 논평.
5 (+-) 0.3 간격을 만듭니다4.7 .. 5.3.(+-)표기법은 보존되지 않습니다.
50 .. 50보다 큰 모든 것
.. 0 0 이하의 모든 것
1.5E-2 .. 2E-2 간격을 만듭니다0.015 .. 0.02
1 ... 2 동일1...2또는1 .. 2또는1..2(범위 연산자 주변의 공간 무시됩니다)

왜냐하면...는 데이터에 널리 사용됩니다 출처, 그것은의 대체 철자로 허용됩니다.... 불행히도 이것은 구문 분석을 만듭니다 모호성 : 상한이의 여부는 확실하지 않습니다.0...2323또는0.23. 이것은 소수점 전에 최소한 하나의 숫자를 요구하여 해결 의 모든 숫자를 가리 킵니다.와이즈 토토입력.

정신 점검으로와이즈 토토거부 하한이 상단보다 큰 간격, 예5 .. 2.

F.30.3. 정도

와이즈 토토값은 내부적으로 저장됩니다 32 비트 플로팅 포인트 번호 쌍. 이것은 그 숫자를 의미합니다 7 개 이상의 중요한 숫자는 잘릴 것입니다.

7 이하의 숫자가 적은 숫자가 유지됩니다 원래 정밀도. 즉, 쿼리가 0.00을 반환하는 경우, 귀하는 귀하입니다 후행 제로가 유물이 아님을 확신 할 것입니다 형식 : 원래 데이터의 정밀도를 반영합니다. 주요 0의 수는 정밀도에 영향을 미치지 않습니다. 값 0.0067은 단지 2 가지 중요한 것으로 간주됩니다 숫자.

F.30.4. 용법

the와이즈 토토모듈에는 요점이 포함되어 있습니다 에 대한 색인 연산자 클래스와이즈 토토값. 그만큼 Gist Opclass에서 지원하는 운영자는 다음과 같습니다.

  • [a, b] << [c, d]가 남아 있습니다

    [a, b]는 전적으로 [c, d]의 왼쪽에 있습니다. 즉, [a, b] << [c, d]는 b <c이고 false 인 경우 사실입니다. 그렇지 않으면

  • [a, b]  [c, d]는

    [a, b]는 전적으로 [c, d]의 오른쪽에 있습니다. 즉, [a, b] [c, d]는 a d와 false 인 경우 참입니다. 그렇지 않으면

  • [a, b] & <[c, d] 겹치거나 왼쪽

    이것은 더 잘 읽을 수 있습니다" "의 오른쪽으로 확장되지 않음. b <=가 될 때는 사실입니다 디.

  • [a, b] & [c, d] 겹치거나 오른쪽

    이것은 더 잘 읽을 수 있습니다" "의 왼쪽으로 확장되지 않음. a =에 맞으면 마찬가지입니다 기음.

  • [a, b] = [c, d] 동일

    세그먼트 [A, B] 및 [C, D]는 동일합니다. = C 및 B = D

  • [a, b] && [c, d] 겹침

    세그먼트 [A, B] 및 [C, D] 중첩.

  • [a, b] @ [c, d] contains

    세그먼트 [a, b]에는 세그먼트 [c, d]가 포함되어 있습니다. a <= c 및 b = d

  • [a, b] <@ [c, d] 포함

    세그먼트 [A, B]는 [C, D]에 포함되어 있습니다. = c 및 b <= d

(Postgresql 8.2 이전, 격리 연산자 @ 및 < @는 각각 @와 ~라고 불 렸습니다. 이 이름은 여전히 있습니다 사용 가능하지만 감가 상각되며 결국 은퇴 할 것입니다. 이전 이름은 컨벤션에서 반전됩니다. 이전에는 핵심 기하학적 데이터 유형이 이어졌습니다!)

표준 B- 트리 연산자도 제공됩니다 예

[a, b] <[c, d]보다 작습니다
[A, B] [C, D]보다

이 사업자들은 실용적으로 많은 의미가 없습니다. 목적이지만 정렬. 이 연산자들은 먼저 (a)와 (c), 그리고 이것들이 같으면 (b)와 (d)를 비교하십시오. 그 결과 대부분의 경우 합리적으로 좋은 정렬, 이는 유용합니다. 이 유형으로 주문을 원합니다.

F.30.5. 노트

사용의 예는 회귀 테스트를 참조하십시오SQL/와이즈 토토.SQL.

변환하는 메커니즘(+-)to 일반 범위는 결정에 완전히 정확하지 않습니다 경계에 대한 중요한 숫자 수. 예를 들어, 결과적으로 하한에 추가 숫자를 추가합니다. 간격에는 10의 힘이 포함됩니다 :

postgres = select '10 (+-) 1 ':: seg as seg;
      세그
-------
9.0 .. 11-해야 할 것 : 9 .. 11

R- 트리 지수의 성능은 크게 의존 할 수 있습니다. 입력 값의 초기 순서. 정렬하는 것이 매우 도움이 될 수 있습니다 의 입력 테이블와이즈 토토열; 보다 스크립트Sort-와이즈 토토ments.pl예.

F.30.6. 크레딧

원래 저자 : Gene Selkov, Jr., Argonne National의 수학 및 컴퓨터 과학 부서 실혐실.

주로 Joe Hellerstein 교수에게 감사드립니다 (http : //db.cs.berkeley.edu/jmh/) 설명을위한 요지의 요지 (http : //gist.cs.berkeley.edu/). 나도 해요 현재와 과거에 모든 Postgres 개발자에게 감사합니다 내 자신의 세상을 만들고 방해받지 않은 살 수 있습니다. 그것. Argonne Lab에 대한 감사를 인정하고 싶습니다. 그리고 수년간의 충실한 미국 에너지 부에 내 데이터베이스 연구 지원.