[SQL] PostgreSQL은 단어의 목록 중 어떤 LIKE 와일드 카드를
SQLPostgreSQL은 단어의 목록 중 어떤 LIKE 와일드 카드를
나는 ~ 25 개 단어의 간단한 목록을 가지고있다. 내가 PostgreSQL의에서 VARCHAR 필드가,하자 해당 목록은 [ 'foo는', '바', '바즈'] 말한다. 나는 그 단어 중 하나가 내 테이블의 모든 행을 찾고 싶어요. 이것은 작동하지만 좀 더 우아하고 뭔가를하고 싶습니다.
select *
from table
where (lower(value) like '%foo%' or lower(value) like '%bar%' or lower(value) like '%baz%')
해결법
-
==============================
1.당신은 즉 교대를 지원하는 포스트 그레스 'SIMILAR TO 연산자를 사용할 수 있습니다
당신은 즉 교대를 지원하는 포스트 그레스 'SIMILAR TO 연산자를 사용할 수 있습니다
select * from table where lower(value) similar to '%(foo|bar|baz)%';
-
==============================
2.PostgreSQL은 또한 전체 POSIX 정규 표현식을 지원합니다 :
PostgreSQL은 또한 전체 POSIX 정규 표현식을 지원합니다 :
select * from table where value ~* 'foo|bar|baz';
~ * ~ 대소 문자를 구분, 소문자를 구분하지 일치합니다.
또 다른 옵션은 사용하는 것입니다 :
select * from table where value like any (array['%foo%', '%bar%', '%baz%']); select * from table where value ilike any (array['%foo%', '%bar%', '%baz%']);
당신은 어떤 어떤 운영자 수익률이 부울을 사용할 수 있습니다. 나는 정규식 옵션이 더 빠를 것이라고 생각하지만, 어떤 당신의 도구 상자에있는 유용한 도구이다.
-
==============================
3.사실 PostgreSQL의에 해당하는 연산자가있다 :
사실 PostgreSQL의에 해당하는 연산자가있다 :
SELECT * FROM table WHERE lower(value) ~~ ANY('{%foo%,%bar%,%baz%}');
-
==============================
4.http://www.postgresql.org/docs/9.0/interactive/textsearch.html : 하나의 '우아한'솔루션은 전체 텍스트 검색을 사용하는 것입니다. 그런 다음 전체 텍스트 검색 쿼리를 사용합니다.
http://www.postgresql.org/docs/9.0/interactive/textsearch.html : 하나의 '우아한'솔루션은 전체 텍스트 검색을 사용하는 것입니다. 그런 다음 전체 텍스트 검색 쿼리를 사용합니다.
from https://stackoverflow.com/questions/4928054/postgresql-wildcard-like-for-any-of-a-list-of-words by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 SQL의 테이블에 대한 모든 제약 조건의 이름을 표시 (0) | 2020.05.07 |
---|---|
[SQL] SQLite는 : CURRENT_TIMESTAMP 기계의하지 시간대, GMT에 (0) | 2020.05.07 |
[SQL] 어떻게 LEFT OUTER 왼쪽 테이블에 존재보다 더 많은 레코드를 반환 가입 할 수 있습니까? (0) | 2020.05.07 |
[SQL] 어떻게 MySQL의 테이블에 열을 이동? (0) | 2020.05.07 |
[SQL] 최저 근무 시간 저장하는 방법과 쿼리를 효율적으로 (0) | 2020.05.07 |