여러 옵션 필드 필터를 사용한 SQL 키워드 검색(메타베이스)
SQL(Self Teached)과 Stack Overflow는 처음입니다.그래서 만약 새로운 말이 있다면 사과드립니다.
현재 메타베이스 내에서 사용자가 검색한 내용에 100% 정확하지 않고 특정 날짜 기간 내에 여러 필드를 검색할 수 있는 쿼리를 작성하려고 합니다.
Search requests:
Date Time...(Required)
User...(optional)
String A...(optional)
String B...(optional)
String C...(optional)
SELECT
a.DateTime,
a.User,
b.StringA,
b.StringB,
b.StringC
FROM TableA a
JOIN tableB b
ON TableAid = TableBid
WHERE a.datetime between {{start}} and {{end}}
[[AND a.User = {{user}}]]
[[AND b.StringA = {{StringA}}]]
[[AND b.StringB = {{StringB}}]]
[[AND b.StringC = {{StringC}}]];
위의 구문은 올바르게 동작하고 있는 것처럼 보이지만, 각각의 필드에 완전한 단어가 입력되어 있는 경우에만 동작합니다.Like 연산자를 사용하여 주어진 문자열과 유사한 문자열을 가진 A B 및 C 열의 모든 행을 검색하려고 합니다.
나는 그것을 사용해봤어요.
[[AND b.StringA = Like ('%'+{{StringA}}+'%')]]
그리고.
[[AND b.StringA = Like CONCAT('%'+{{StringA}}+'%')]]
몇 가지 스레드에서 몇 가지 @StringA 솔루션을 시도했지만 아무런 운이 없었습니다.
누구 저 좀 도와줄 사람 있어요?어떤 도움이라도 주시면 감사하겠습니다.
그래서 시행착오 끝에 이 문제를 해결했습니다.다른 사람에게도 같은 문제가 생겼을 경우에 대비하여 스레드를 업데이트하고 싶었습니다.
보다는
[[AND b.StringA = Like CONCAT('%'+{{StringA}}+'%')]]
꼭 그런 것처럼 보여야 해
[[and b.StringA like (concat('%',{{StringA}},'%'))]]
사소한 구문상의 오류지만, 이것 때문에 나는 잠시 당황했다.
어쨌든 저는 사람들이 제공하려고 했던 모든 도움에 감사드리며 이것이 미래에 누군가에게 도움이 되기를 바랍니다.
필요한 것은[[AND b.StringA = Like ({{StringA}}+'%']]
STRING A로 시작하는 모든 값을 검색합니다.
또는 LIKE를 사용합니다.[[AND b.StringA = Like CONCAT('%'+{{StringA}}+'%')]]
어떤 위치에서든 그 가치를 찾을 수 있습니다.[당신의 예]
또한 옵션 데이터를 확인할 때 OR을 사용하는 것이 좋습니다. 그리고 반환하기 전에 모든 것이 참이어야 합니다.
언급URL : https://stackoverflow.com/questions/52546551/sql-keyword-search-using-multiple-optional-field-filters-metabase
'sourcecode' 카테고리의 다른 글
파이썬에서 델은 언제 유용합니까? (0) | 2022.09.06 |
---|---|
Java에서의 이니셜라이저와 컨스트럭터 사용 (0) | 2022.09.06 |
PHP 다른 네임스페이스에서 모든 클래스를 가져오는 방법 (0) | 2022.09.06 |
요소가 존재할 때까지 기다리는 방법 (0) | 2022.09.06 |
외부 "C++"를 사용하는 이유는 무엇입니까? (0) | 2022.09.06 |