% 및 _와 같은 SQLite
SQLite like
문 에서 밑줄 문자가 무엇을하는지 알 수 없습니다 . 와일드 카드 문자 %
는 대부분의 다른 SQL 데이터베이스에서와 동일합니다.
그래서, 그 망할 _
캐릭터는 무엇을합니까?
밑줄은 대부분의 다른 SQL 데이터베이스와 동일하며 단일 문자와 일치합니다 (즉 .
, 정규식에서 와 동일 ). 로부터 미세 설명서 :
LIKE 패턴의 밑줄 ( "_")은 문자열의 단일 문자와 일치합니다.
예를 들면 :
-- The '_' matches the single 'c'
sqlite> select 'pancakes' like 'pan_akes';
1
-- This would need '__' to match the 'ca', only one '_' fails.
sqlite> select 'pancakes' like 'pan_kes';
0
-- '___' also fails, one too many '_'.
sqlite> select 'pancakes' like 'pan___kes';
0
그리고 결과가 의미가 있는지 확인하기 위해 SQLite는 부울에 0과 1을 사용합니다 .
LIKE
표현식에서 다음과 같은 것은 표준 SQL입니다 .
%
빈 문자를 포함하여 모든 문자 시퀀스와 일치합니다..*
정규식 과 동일합니다 ._
단일 문자와 일치합니다..
정규식 과 동일합니다 .당신은 탈출을위한 캐릭터를 선택할 수 있습니다
%
,_
그 자체 자체 :... WHERE expr LIKE 'a_b%c\\d\%\_' ESCAPE '\'
이것은 일치
a×b×××c\d%_
하거나 일치a×bc\d%_
하지abc\d%_
않습니다a×b×××cd%_
.
Additionnally SQLite는 당신이이 GLOB
것을 제외하고, 정확히 같은 방식으로 동작 키워드를 %
하게 *
하고 _
이된다 ?
.
@Benoit의 답변에 대한 부록 :
는 모든 표현식이 아닌 ESCAPE
가장 최근 LIKE
표현식에 적용됩니다 LIKE
. 모두 탈출하려면 ESCAPE
아래와 같이 여러 번 사용해야 합니다.
WHERE foo LIKE '%bar^%%' ESCAPE '^' AND foo LIKE '%baz^_%' ESCAPE '^'
이 술어 foo
는 bar % 또는 baz 와 모든 문자 를 포함하는 값과 일치합니다 .
기록을 위해 XCode / Objective-C 환경에서 사용하는데 '\'가 작동하지 않습니다. 대신 다른 것을 사용하십시오 ...
백 슬래시 문자를 사용하는 C 스타일 이스케이프는 표준 SQL ( https://www.sqlite.org/lang_expr.html ) 이 아니기 때문에 지원되지 않습니다.
참조 URL : https://stackoverflow.com/questions/7323162/sqlite-like-and
'IT story' 카테고리의 다른 글
아무데도 가지 않는 링크를 어떻게 만드나요 (0) | 2020.12.28 |
---|---|
H2DB에서 MySql 에서처럼 SQL 덤프를 얻는 방법은 무엇입니까? (0) | 2020.12.28 |
장고 모델 : ID 목록 가져 오기 (0) | 2020.12.28 |
생성 된 목록의 각 항목에 대한 RxJava 지연 (0) | 2020.12.28 |
선택한 항목 (ListView에서)이 ContextMenu (Android)를 생성했는지 감지 (0) | 2020.12.28 |