WHERE 1 = 1
AND a.usemap_id = #{usemap_id}::integer
AND a.use_yn = 'Y'
AND b.a1 IS NOT NULL
회사에서 쿼리를 쓰는데
처음보는 where 1=1
1 = 1은 말그대로 참을 의미하는데
WHERE 1 = 1
AND a.usemap_id = #{usemap_id}::integer
AND a.use_yn = 'Y'
AND b.a1 IS NOT NULL
저 세개의 조건을 만족하는 데이터들을 모두(참) 조회한다 라는 뜻이다.
쓰는 이유는 코드가 깔끔해지고 주석처리가 편하다고 한다.
:: 연산자는 대부분의 SQL 데이터베이스 시스템에서 데이터 형식을 변환하는 데 사용됩니다.
여기서 #{usemap_id}::integer는 usemap_id 변수를 정수(integer)로 변환하는 것을 의미합니다. 이렇게 함으로써 데이터베이스에서 a.usemap_id 열과 비교할 때 해당 열의 데이터 형식과 일치시키는 것입니다.
예를 들어, usemap_id가 문자열 형식으로 제공되었을 때 이를 정수로 변환하여 데이터베이스와의 비교를 수행할 수 있습니다. 데이터 형식을 일치시키지 않으면 비교 연산에 오류가 발생할 수 있습니다.
WHERE 1 = 1
AND a.usemap_id = #{usemap_id}::integer
AND a.use_yn = 'Y'
AND b.a1 IS NOT NULL
ORDER BY LPAD(a.u_num, 10, '0') DESC, creat_dt DESC;
LPAD() 함수는 주어진 문자열을 지정된 길이로 채우는 함수입니다. 여기서는 주로 숫자로 이루어진 문자열을 왼쪽으로 채우는 데 사용됩니다.
예를 들어, LPAD('123', 5, '0')를 실행하면 결과는 '00123'이 됩니다. 여기서 '123'은 원래 문자열이고, 길이가 5가 되도록 왼쪽에 '0'을 채웠습니다.
이 쿼리에서 LPAD(a.u_num, 10, '0')는 a 테이블의 u_num 열을 가져와서 그 값을 왼쪽으로 0을 채워 10자리로 만든 것입니다. 이렇게 함으로써 숫자를 문자열로 변환하고, 앞에 0을 추가하여 정렬할 때 원하는 순서로 정렬할 수 있습니다.
ST_ASTEXT() 함수는 PostGIS에서 제공하는 함수로, 공간 데이터의 기하학적인 형태를 텍스트 형태로 반환합니다. 이 함수는 지리 정보 시스템(GIS)에서 공간 데이터를 다룰 때 사용됩니다.
여기서 b.center_geom은 공간 데이터 컬럼으로, 이 데이터는 점, 선, 다각형 등의 공간 객체를 저장할 수 있습니다. ST_ASTEXT() 함수는 이러한 공간 객체를 텍스트 형태로 변환하여 출력합니다. 따라서 ST_ASTEXT(b.center_geom) AS geom는 b 테이블의 center_geom 열에 있는 공간 데이터를 텍스트 형태로 변환한 뒤, 그 결과를 geom이라는 별칭으로 반환한다는 의미입니다.
'공부중 > SQL' 카테고리의 다른 글
sql 기초 구문 정리 (0) | 2023.04.14 |
---|
댓글