복붙노트

[SQL] 어떻게 PostgreSQL의 여러 값으로 SQL LIKE 조건을 사용 하는가?

SQL

어떻게 PostgreSQL의 여러 값으로 SQL LIKE 조건을 사용 하는가?

여러 일치 항목을 찾기 위해 어떤 짧은 방법이 있나요 :

 SELECT * 
 from table 
 WHERE column LIKE "AAA%" 
    OR column LIKE "BBB%" 
    OR column LIKE "CCC%"

이 질문은 PostgreSQL의 9.1 적용되지만 일반적인 해결책이 있다면 더 좋을 것이다.

해결법

  1. ==============================

    1.아마 일하는 것이 유사한 TO를 사용하고 계십니까?

    아마 일하는 것이 유사한 TO를 사용하고 계십니까?

    SELECT * from table WHERE column SIMILAR TO '(AAA|BBB|CCC)%';
    
  2. ==============================

    2.배열 또는 세트 비교를 사용하여 :

    배열 또는 세트 비교를 사용하여 :

    create table t (str text);
    insert into t values ('AAA'), ('BBB'), ('DDD999YYY'), ('DDD099YYY');
    
    select str from t
    where str like any ('{"AAA%", "BBB%", "CCC%"}');
    
    select str from t
    where str like any (values('AAA%'), ('BBB%'), ('CCC%'));
    

    을하는 것도 가능하고 어떤 순서와 일치한다면 정규식에 쉽지 않을 것이다 :

    select str from t
    where str like all ('{"%999%", "DDD%"}');
    
    select str from t
    where str like all (values('%999%'), ('DDD%'));
    
  3. ==============================

    3.이 멋진 트릭 @maniek에 따라 어떠한 사용 LIKE (ARRAY [ 'AAA의 %', 'BBB의 %', 'CCC의 %는']) 오늘 아침 보여 주었다.

    이 멋진 트릭 @maniek에 따라 어떠한 사용 LIKE (ARRAY [ 'AAA의 %', 'BBB의 %', 'CCC의 %는']) 오늘 아침 보여 주었다.

  4. ==============================

    4.패턴 매칭에 설명 된대로 (|) 다음과 같은 방법으로 분리 된 정규 표현식 연산자 (~)를 사용할 수 있습니다

    패턴 매칭에 설명 된대로 (|) 다음과 같은 방법으로 분리 된 정규 표현식 연산자 (~)를 사용할 수 있습니다

    select column_a from table where column_a ~* 'aaa|bbb|ccc'
    
  5. ==============================

    5.다음 쿼리는 저를 도왔다. 대신 LIKE를 사용하여, 당신은 ~ * 사용할 수 있습니다.

    다음 쿼리는 저를 도왔다. 대신 LIKE를 사용하여, 당신은 ~ * 사용할 수 있습니다.

    select id, name from hosts where name ~* 'julia|lena|jack';
    
  6. ==============================

    6.당신은 당신이 실제로 와일드 카드가 필요하지 않은 경우, IN을 사용할 수 있습니다.

    당신은 당신이 실제로 와일드 카드가 필요하지 않은 경우, IN을 사용할 수 있습니다.

    고르다 * 테이블에서 WHERE 열 IN ( 'AAA', 'BBB', 'CCC')

  7. from https://stackoverflow.com/questions/12957993/how-to-use-sql-like-condition-with-multiple-values-in-postgresql by cc-by-sa and MIT license