Cute Happy Ghost
본문 바로가기
QGIS·Geo

[geoserver] SQL 뷰에서 parameter설정, 정규식, 파라미터 오류, 여러개의 변수 구분

by JENN_tech7 2022. 6. 23.
728x90
SMALL

원하는 것은 해당 시군구, 시설명, 시설타입으로 검색한 값들이 지도에 point형태로 표출되는 것

 

 

select * 
from layer_test
where fclt_sn in 
	(select f.fclt_sn 
     from fclt f 
     where f.sgg = '%cd%' and f.fclt_nm like '%nm%' and f.fclt_type1 like'%type%')

내가 작성한 쿼리는 위와 같다

layer에 각 시설들이 있는데 db에는 시설id만 있음

fclt(시설테이블)에서 시군구, 시설명, 시설타입을 검색하여 가져오는 쿼리이다

sql view에서는 파라미터를 '%cd%' 이런식으로 작성해주면됨

 

 

 

 

 

여기서 많이 헤맸는데 저 정규표현식을 ^[\w\d\s]+$로 하니까 문자는 허용이 안되서 오류가 났었다

해당 정규식을 삭제해줌

(원래라면 모두 정규식을 넣어줘야함)

그리고 기본값에 %%를 넣어주면 됨

%%를 안넣어주면 공백을 문자로 인식을 하는지 아무것도 안뜸

 

 

var value = ....;   //넘길값
viewparams = `cd:${value}`;  //키값 형태로 param설정

var params = test_layer.getSource().getParams();
params.VIEWPARAMS = viewparams;   //해당 layer의 viewparams으로 설정

test_layer.getSource().updateParams(params); //update하여 layer다시 불러오기

이렇게 하면 완료!

 

 

 

 

 

 

만약에 다중의 파라미터를 넘기고 싶다면

var viewparams = `cd:${value};type:%${type}%;nm:%${nm}%`;

이런식으로 세미콜론(;)으로 각 변수를 구분해주면된다

문자전체가 아닌 문자열 포함으로 검색을 하고싶으면 저렇게 앞뒤로 %%를 붙혀주면 됨

이것때매 반의 반나절을 고생함 

 

 

 

 

 

 

728x90
LIST

댓글