사용자 정의 유형 및 날짜 유형 속성에 일부 문자열 유형 속성이 있습니다. r_creation_date
. 검색에 모두 사용하여 더 많은 필드가 값을 입력하면 결과가 좁혀집니다.필드 값을 확인한 다음 DQL을 실행하는 방법
D2-Client 3.1을 사용하고 D2-Composer를 사용하여 검색 속성 페이지와 쿼리 폼 (여기서 DQL을 지정 함)을 작성합니다.
I이 DQL 형성 한 문자열 입력 필드에 대한 필터링: 모든 우선 어떤 캐릭터가 그 속성에 해당 문자열의 발생을 확인하여 입력 될 때마다 :
select * from my_custom_type
where (strattrib1 like '%$value(strattribinput1)%') and
("strattrib2" like '%$value(strattribintput2)%') and
("strattrib3" like'$value(strattribintput3)%') and
("strattrib4" like '%$value(strattribintput4)%') and
("strattrib5" like '%$value(strattribintput5)%') and
("strattrib6" like '%$value(strattribintput6)%')
여기 LIKE %
은 이중 목적을 수행. 아무 것도 입력하지 않으면 해당 속성의 모든 값을 고려합니다. 이렇게하면 빈 입력을 명시 적으로 확인하지 않고 AND
을 보낼 수 있습니다. ($value(strattrib1)<>''
)
이제이 검색어에 날짜 유형 속성 r_creation_date
에 필터를 추가하고 싶습니다. 그러나 나는 날짜 비교를위한 DATEDIFF()
기능을 사용할 필요가 명시 적으로 r_creation_date
에 어떤 입력을 확인해야하기 때문에 다음과 같이 나는이 작업을 수행 할 수있는 방법 위선적 인 말투 : 사용자가 r_creation_date_input
에 대한 날짜를 선택하지 않는 경우 여기
select * from my_custom_type
where (strattrib1 like '%$value(strattribinput1)%') AND
("strattrib2" like '%$value(strattribintput2)%') AND
("strattrib3" like'$value(strattribintput3)%') AND
("strattrib4" like '%$value(strattribintput4)%') AND
("strattrib5" like '%$value(strattribintput5)%') AND
("strattrib6" like '%$value(strattribintput6)%') AND
(DATEDIFF(day, "r_creation_date", DATE('$value(r_creation_date_intput)')) >= 0 AND $value(r_creation_date_input)<>'')
,
$value(r_creation_date_input)<>''
의 결과는
FALSE
이고 전체 쿼리는
FALSE
입니다. 따라서 select 쿼리는 아무 것도 반환하지 않습니다.
질문
- 내가 어떻게 할 수 있습니까?
- 다른 방법이 있습니까?
- 표준 접근 방식은 무엇입니까?
- 동일한 DQL에 날짜 필드에 필터를 추가하고 싶습니다. 그래서 가능합니까?
- 문자열 속성에 대한 입력을 어떻게 검증 할 수 있습니까? Java로 작성하여 D2-Client에 연결할 수 있습니까? 접근의