sourcecode

여러 옵션 필드 필터를 사용한 SQL 키워드 검색(메타베이스)

copyscript 2022. 9. 6. 22:25
반응형

여러 옵션 필드 필터를 사용한 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

반응형