[SQL] SQL은 - 쿼리처럼 여러 결합
SQLSQL은 - 쿼리처럼 여러 결합
SO에 대한 내 첫 번째 질문 이봐! 됐건 ...
여전히 상대적으로 SQL에서 newb은 내가 여기서 뭔가를 누락 될 수 있습니다 생각 때문에. 내 질문은 내가 현재 전화 번호의 전체 테이블이 있습니다. 나는 내가 가지고있는 목록과 유사 전화 번호를 검색 쿼리를 갖고 싶어. 그래서 예를 들어, 내가 '555987', '555123', '555321'로 시작하는 전화 번호를 찾으려합니다. 당신이 번호 목록이있는 경우 당신이 단지 같은 쿼리를 할 수 일반적으로 알고
SELECT *
FROM phonenumbers
WHERE number in ('5551234567', '5559876543', .... );
등으로이 할 수있는 방법이 있나요? 등
SELECT *
FROM phonenumbers
WHERE number in like ('555123%', '555321%', '555987%'); //I know this doesn't actually work
대신 개별적으로이 작업을 수행해야
SELECT *
FROM phonenumbers
WHERE number like '555123%'
or number like '555321%'
or number like '555987%'; //Which does work but takes a long time
아니면 그냥 누락 것으로이 작업을 수행하기 쉬운이있다? 나는 그 것을 함께 도움이 될있는 모든 명령이 있는지 모르겠어요, 포스트 그레스를 사용하고 있습니다. 감사!
해결법
-
==============================
1.| 당신은 유사한 제품에 사용하고와 태그를 분리 할 수 있습니다 파이프 '55만5천1백23% | 55만5천3백21% | 555,987%'
| 당신은 유사한 제품에 사용하고와 태그를 분리 할 수 있습니다 파이프 '55만5천1백23% | 55만5천3백21% | 555,987%'
예를 들면 :
SELECT * FROM phonenumbers WHERE number SIMILAR TO '555123%|555321%|555987%'
-
==============================
2.늦게 파티에,하지만 후대를 위해 ... 또한 모든 (배열 식)를 사용할 수 있습니다
늦게 파티에,하지만 후대를 위해 ... 또한 모든 (배열 식)를 사용할 수 있습니다
SELECT * FROM phonenumbers WHERE number LIKE ANY(ARRAY['555123%', '555321%', '555987%'])
-
==============================
3.모든 숫자를 가정하면 문자를 포함하고 숫자는 항상 "접두사"(예 : LIKE '123%')입니다하지 않습니다
모든 숫자를 가정하면 문자를 포함하고 숫자는 항상 "접두사"(예 : LIKE '123%')입니다하지 않습니다
SELECT number FROM ( VALUES ('555123'), ('555321'), ('555000') ) prefixes (prefix) JOIN phonenumbers ON number >= prefix AND number < prefix || 'a'
그렇게 빠를 수있는 경우에, PHONENUMBERS에 인덱스를 사용합니다.
-
==============================
4.난 그렇게 생각하지 않는다, 그러나 당신은 당신이, 즉를에 일치시킬 값을 포함하는 테이블 기준에 PHONENUMBERS에 가입 할 수
난 그렇게 생각하지 않는다, 그러나 당신은 당신이, 즉를에 일치시킬 값을 포함하는 테이블 기준에 PHONENUMBERS에 가입 할 수
JOIN criteria ON phonenumbers.number LIKE criteria.phonenumbers
조건 소수의 용은 아마 가치를하지만
-
==============================
5.또한 공식 문서의 섹션 9.7.3을 참조 POSIX 정규 표현식에 의존 할 수 있습니다.
또한 공식 문서의 섹션 9.7.3을 참조 POSIX 정규 표현식에 의존 할 수 있습니다.
예를 들면 :
SELECT * FROM foobar WHERE name ~ '12345|34567';
당신의 이름 필드는 문자열 타입이므로주의하는 것이 중요하다.
-
==============================
6.당신의 접두사가 모두 같은 길이 있습니다 아마도 경우 다음에 어디 RIGHT (번호)를 할 수있다 ( '123456', '234456', '등', '등')
당신의 접두사가 모두 같은 길이 있습니다 아마도 경우 다음에 어디 RIGHT (번호)를 할 수있다 ( '123456', '234456', '등', '등')
from https://stackoverflow.com/questions/2245536/sql-combining-multiple-like-queries by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 여러 SELECT 문을 결합 (0) | 2020.07.24 |
---|---|
[SQL] SQL 서버에서 날짜의 내부 표현은 무엇인가? (0) | 2020.07.24 |
[SQL] 테이블을 중복 제거하는 가장 좋은 방법은 무엇입니까? (0) | 2020.07.24 |
[SQL] 쿼리 BETWEEN SQL NOT (0) | 2020.07.24 |
[SQL] 어떻게 PostgreSQL의 여러 값으로 SQL LIKE 조건을 사용 하는가? (0) | 2020.07.24 |