[SQL] 어디 문에서 SQL을 사용하여 별칭
SQL어디 문에서 SQL을 사용하여 별칭
나는 어디에서 문 제가에 별칭을 사용할 수 있는지 궁금합니다.
예 :
SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1
FROM MyTable
WHERE Col1 = 'MySearch'
나는 2005 MSSQL 사용
해결법
-
==============================
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.대신 "여기서"의 "필요"를 사용할 수 있습니다.
대신 "여기서"의 "필요"를 사용할 수 있습니다.
SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1 FROM MyTable HAVING Col1 = 'MySearch'
할 인 "여기서"쿼리 실행 후. 성능에 문제가 없을 오른쪽 조건에서 사용에주의.
-
==============================
3.하위 쿼리를 사용합니다 :
하위 쿼리를 사용합니다 :
SELECT * FROM (SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1 FROM MyTable) WHERE Col1 = 'MySearch'
-
==============================
4.이 작업을 수행 할 수 있습니다 :
이 작업을 수행 할 수 있습니다 :
SELECT Col1 FROM ( SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1 ) AS x WHERE Col1 = 'MySearch'
-
==============================
5.
SELECT * FROM ( SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1 FROM MyTable ) WHERE Col1 = 'MySearch'
(나는 그것을 표준 SQL과 MSSQL에서 일 것입니다 생각, 오라클에서이 작품을 알고있다.)
-
==============================
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.뷰 또는 파생 테이블을 사용한다.
뷰 또는 파생 테이블을 사용한다.
파생 테이블을 사용하면, 당신의 예는 같을 것이다 :
select col1 from (SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1 FROM MyTable) where col1='Mysearch'
-
==============================
8.SQL 최적화 프로그램은 당신이 생각하는 것처럼 바보 아니므로 그냥 다시 SUBSTRING 식을 반복 것 때문에 실제로 별칭을 사용하면 더 빨리 쿼리를하지 않습니다.
SQL 최적화 프로그램은 당신이 생각하는 것처럼 바보 아니므로 그냥 다시 SUBSTRING 식을 반복 것 때문에 실제로 별칭을 사용하면 더 빨리 쿼리를하지 않습니다.
-
==============================
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.대답은 당신은 할 수 없습니다 -이 작업을 수행 할 수 있습니다
대답은 당신은 할 수 없습니다 -이 작업을 수행 할 수 있습니다
SELECT SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) AS Col1 FROM MyTable WHERE SUBSTRING(Column1, 1, 4) + SUBSTRING(Column1, 4, 3) = 'MySearch'
from https://stackoverflow.com/questions/715462/sql-use-alias-in-where-statement by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 정규 표현식은 일반 SQL 구문에 맞게? (0) | 2020.04.26 |
---|---|
[SQL] 어떻게 SQLite는 TIMESTAMP 값을 비교 (0) | 2020.04.26 |
[SQL] 잠금 장치의 총 수는 로크 테이블 크기를 초과 (0) | 2020.04.26 |
[SQL] IN () 절에 SQL 매개 변수를 전달하면 .NET에서 데이터 집합을 입력하여 (0) | 2020.04.26 |
[SQL] SQL 쿼리는 급여 테이블에서 N 번째 가장 높은 급여를 찾을 수 (0) | 2020.04.26 |