복붙노트

[SQL] SQL 서수 위치 표기법을 사용의 장점?

SQL

SQL 서수 위치 표기법을 사용의 장점?

서수 위치 표기, AKA 서수는, 열은 SELECT 절에 열 목록에서 열 순서에 따라 속기 대신 열 이름 또는 열 별칭 중 하나의. 일반적으로 ORDER BY 절에서 지원, 일부 데이터베이스 (MySQL은 3.23 이상의, PostgreSQL은 8.0 이상) GROUP BY 절에 대한 구문을 지원뿐만 아니라.

여기에 서수를 사용하는 예는 다음과 같습니다

GROUP BY 1, 2
ORDER BY 1, 2

열 순서 변경, 서수를 업데이트해야하거나 쿼리가 당신이 생각했던 것을 반환하지 않을 경우 - 그것은 쿼리 취성을 만들기 때문에 사용하는 것이 좋지 않다. 그 위치에서 열이 집계 내에서 포장하는 경우 그룹에 의해 사용될 때 매우 가능성이 오류를 얻을 것 ...

은 당신이 (어쨌든 나에게, 서수 사용 논쟁을) 저장 프로 시저 또는 함수를 사용하지 않는 경우, 와이어를 통해 보내 내가 생각할 수있는 데이터를 적게되어 혜택을 누릴 수 있습니다. 저는 누락 된 다른 이점이 있나요?

이 숙제처럼 들릴 수도 있지만, 정말 교육 점심 식사를 위해 매달에 사무실 박았을 연구합니다. 그들은 점심을 지불, 우리는 관심의 작은 주제를 제공해야합니다.

해결법

  1. ==============================

    1.나는 그것을 사용하십시오 :

    나는 그것을 사용하십시오 :

    더 거꾸로 없습니다.

    SQL Server는 어쨌든에 의해 순서대로 지원합니다. 다른 곳이 평가 될 수있는 표현입니다.

  2. ==============================

    2.필드를 얻기 위해이 같은 일을 종종 내가 열이 많은 테이블을 쿼리있을 때 (A PROD 환경 단지 데이터 탐색을위한 임시-땅에서 ... 나는 코드이 결코 것처럼) 나는 걱정하지 가까운 곳에 :

    필드를 얻기 위해이 같은 일을 종종 내가 열이 많은 테이블을 쿼리있을 때 (A PROD 환경 단지 데이터 탐색을위한 임시-땅에서 ... 나는 코드이 결코 것처럼) 나는 걱정하지 가까운 곳에 :

    select top 1000
      Col_1, Col_18, Col_50, Col_117, *
    from
      TableWithTonsOfCols
    order by
      1, 4 desc, 3
    

    내가 COL_1, Col_117 내림차순, Col_50에 의해 주문을했다하면 문이 나는 "*"더블 업에 기인하여 순서에 의미 열을 모르는 것 때문에 내 쿼리 발프 것이다. 매우 일반적인,하지만 여전히 유용한 기능하지 않습니다.

  3. ==============================

    3.나를 위해 두 개의 사용 사례는 다음과 같습니다

    나를 위해 두 개의 사용 사례는 다음과 같습니다

  4. ==============================

    4.지금은 인라인 뷰를 사용하는 경향이 :

    지금은 인라인 뷰를 사용하는 경향이 :

    select col_a, count(*) from
      (select case ...... end col_a from ...)
    group by col_a
    order by col_a;
    

    그러나이 유효 구문되기 전에 시대에,이 칼럼의 전체 텍스트를 다시 입력 도움을했다. 까다로운 기능을 사용하면 같은 BY하여 SELECT의 가치와 ORDER 사이의 불일치의 가능성이 있었다

    select ltrim(col_name,'0123456789')
    from table
    order by ltrim(col_name,'123456789')
    

    당신은 당신이 선택한 항목으로 주문하지 않는 것을 선택 수단에 '0'.

  5. ==============================

    5.나는 쿼리 생성 알고리즘을 -는 SQL 자동 생성됩니다. 서수 수단을 사용하여 다시 필드 이름을 가져올 필요없이 생성 된 필드를 참조 할 수있다. 사용자는 스크린상의 목록에서 선택하여 테이블의 이름 필드를 참조 할 수있다. 언제 까지나 나는 SQL로 목록의 대응을, 나는 역시 SELECT 항목 순서 인 경우, 필드 이름을 알 필요하지 않을 것입니다.

    나는 쿼리 생성 알고리즘을 -는 SQL 자동 생성됩니다. 서수 수단을 사용하여 다시 필드 이름을 가져올 필요없이 생성 된 필드를 참조 할 수있다. 사용자는 스크린상의 목록에서 선택하여 테이블의 이름 필드를 참조 할 수있다. 언제 까지나 나는 SQL로 목록의 대응을, 나는 역시 SELECT 항목 순서 인 경우, 필드 이름을 알 필요하지 않을 것입니다.

    메모리이 1970 년대 후반에 SQL 표준에로 사용 말한다

  6. ==============================

    6.내가 올바르게 기억, 당신이 설명처럼 서수의 사용은 SQL Server의 이후 릴리스에서 마이크로 소프트에 의해 사용되지 않습니다. 나는 이것에 틀릴 수도 있지만, 나는 그런 경우라고 생각한다. 난 항상 덜 입력을 포함하기 때문에 어떤 경우에 그들을 사용 좋아했습니다 때 기름 한 쿼리를 포함하는 파생 열 당신이있는 거 거래.

    내가 올바르게 기억, 당신이 설명처럼 서수의 사용은 SQL Server의 이후 릴리스에서 마이크로 소프트에 의해 사용되지 않습니다. 나는 이것에 틀릴 수도 있지만, 나는 그런 경우라고 생각한다. 난 항상 덜 입력을 포함하기 때문에 어떤 경우에 그들을 사용 좋아했습니다 때 기름 한 쿼리를 포함하는 파생 열 당신이있는 거 거래.

  7. from https://stackoverflow.com/questions/2253040/benefits-of-using-sql-ordinal-position-notation by cc-by-sa and MIT license