해당 쿼리는
시작날짜(stDate), 종료날짜(edDate), 검색키워드(keyword), 반경거리(range), x, y좌표 의 검색조건
property를 가지는 쿼리문입니다.
<parameter class="haspmap">
SELECT RNUM, TO_CHAR(REG_DATE,'YYYY-MM-DD HH24:MI:SS') AS REG_DATE,
R_VALUE, LOC_X, LOC_Y, U_ID, LOC_ADDR, F_NAME, STATUS
FROM(
SELECT ROWNUM AS RNUM, TO_DATE(REG_DATE,'YYYY-MM-DD HH24:MI:SS') AS REG_DATE,
TO_CHAR(R_VALUE, 'FM9999990.000') AS R_VALUE, LOC_X, LOC_Y, U_ID, LOC_ADDR, F_NAME, STATUS
FROM CITIZEN_DATA
WHERE REG_DATE BETWEEN $stDate$ AND $edDate$
<dynamic prepend="AND">
<isNotEmpty property="keyword" prepend="AND">
LOC_ADDR LIKE '%$keyword$%'
AND SQRT(
POWER(LOC_X - ROUND(<iterate property="x" open="(" close=")" conjunction="OR">#[]</iterate>, 7),2)
+ POWER(LOC_Y - ROUND(<iterate property="y" open="(" close=")" conjunction="OR">#[]</iterate>, 7),2)
) <![CDATA[<=]]> #range#
</isNotEmpty>
</dynamic>
)
검색날짜는 늘 세팅이 되어있기 때문에 dynamic조건이 없으며
키워드 검색시 list에 담긴 각각의 x, y좌표를 map에 담아 반경 100, 200, ... 500m 이내 데이터가 있는 경우에만
리스트를 출력하는 쿼리를 만드려고 합니다.
x, y좌표가 없는 경우에는 출력이 잘 되는데 <iterate 조건만 생기면 에러가 납니다ㅠㅠ
참고로 map에 담긴 property는 다음과 같이 출력됩니다.
{stDate=2013091014, range=100, keyword=포항, edDate=2013091014,
y=[36.01888815251627, 36.00865185075951, 36.04183172813185],
x=[129.34312147483328, 129.3593413382186, 129.36565196037432]}
쿼리를 어떻게 수정해야 하나요ㅠㅠ