복붙노트

[SQL] 어디 문에서 SQL을 사용하여 별칭

SQL

어디 문에서 SQL을 사용하여 별칭

나는 어디에서 문 제가에 별칭을 사용할 수 있는지 궁금합니다.

예 :

SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3)  AS Col1
FROM MyTable
WHERE Col1 = 'MySearch'

나는 2005 MSSQL 사용

해결법

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

    1.불가능하지만, 다음을 수행 할 수 있습니다 :

    불가능하지만, 다음을 수행 할 수 있습니다 :

    SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3)  AS Col1
    FROM MyTable
    WHERE SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) = 'MySearch'
    

    필요하지 하위 쿼리하거나 해킹

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

    2.대신 "여기서"의 "필요"를 사용할 수 있습니다.

    대신 "여기서"의 "필요"를 사용할 수 있습니다.

    SELECT
        SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3)  AS Col1
    FROM
        MyTable
    HAVING
        Col1 = 'MySearch'
    

    할 인 "여기서"쿼리 실행 후. 성능에 문제가 없을 오른쪽 조건에서 사용에주의.

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

    3.하위 쿼리를 사용합니다 :

    하위 쿼리를 사용합니다 :

    SELECT * 
    FROM 
      (SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1 FROM MyTable)
    WHERE Col1 = 'MySearch'
    
  4. ==============================

    4.이 작업을 수행 할 수 있습니다 :

    이 작업을 수행 할 수 있습니다 :

    SELECT Col1
    FROM ( SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1 ) AS x
    WHERE Col1 = 'MySearch'
    
  5. ==============================

    5.

    SELECT * FROM (
      SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3)  AS Col1
      FROM MyTable
    )
    WHERE Col1 = 'MySearch'
    

    (나는 그것을 표준 SQL과 MSSQL에서 일 것입니다 생각, 오라클에서이 작품을 알고있다.)

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

    6.나는 그것이 불가능하다 생각하지만, 어쩌면 당신은 SQL 2005을 통해 공통 테이블 식에 좀 걸릴 수 있습니다

    나는 그것이 불가능하다 생각하지만, 어쩌면 당신은 SQL 2005을 통해 공통 테이블 식에 좀 걸릴 수 있습니다

    이 같이 :

    WITH MyCTE( Col1) AS
    (
    SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3)  AS Col1
    FROM MyTable
    )
    SELECT *
    FROM MyCTE
    WHERE Col1 = 'MySearch'
    
  7. ==============================

    7.뷰 또는 파생 테이블을 사용한다.

    뷰 또는 파생 테이블을 사용한다.

    파생 테이블을 사용하면, 당신의 예는 같을 것이다 :

    select col1 
    from 
    (SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3)  AS Col1
    FROM MyTable) 
    where col1='Mysearch'
    
  8. ==============================

    8.SQL 최적화 프로그램은 당신이 생각하는 것처럼 바보 아니므로 그냥 다시 SUBSTRING 식을 반복 것 때문에 실제로 별칭을 사용하면 더 빨리 쿼리를하지 않습니다.

    SQL 최적화 프로그램은 당신이 생각하는 것처럼 바보 아니므로 그냥 다시 SUBSTRING 식을 반복 것 때문에 실제로 별칭을 사용하면 더 빨리 쿼리를하지 않습니다.

  9. ==============================

    9.PostgreSQL을 9.3+ 또는 오라클 12C으로, 지금은 측면 즉 별칭을 만들 수 있습니다 가입이 있습니다.

    PostgreSQL을 9.3+ 또는 오라클 12C으로, 지금은 측면 즉 별칭을 만들 수 있습니다 가입이 있습니다.

    당신이 위의 테이블을 참조 할 수 있습니다 마녀 내부 관절 측면 조인입니다.

    SELECT col1, col2,col3
    FROM MyTable m
    JOIN LATERAL (
        SELECT SUBSTRING(m.Column1, 1, 4) + SUBSTRING(Column1, 4, 3)  AS Col1 
    ) x ON true
    WHERE Col1 = 'MySearch'
    

    이 구문을 사용하면 부실 할 수있는 '*'를 사용 또는 모든 열을 다시 복사 할 필요가 없습니다.

  10. ==============================

    10.대답은 당신은 할 수 없습니다 -이 작업을 수행 할 수 있습니다

    대답은 당신은 할 수 없습니다 -이 작업을 수행 할 수 있습니다

    SELECT 
        SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3)  AS Col1
    FROM 
        MyTable
    WHERE 
        SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) = 'MySearch'
    
  11. from https://stackoverflow.com/questions/715462/sql-use-alias-in-where-statement by cc-by-sa and MIT license