LIKE 필터에 밑줄 문자를 사용하면 모든 결과가 나타나는 이유는 무엇입니까?
를 SQL로 작성했습니다.LIKE★★★★
SELECT * FROM Manager
WHERE managerid LIKE '_%'
AND managername LIKE '%_%'
서서 LIKE밑줄을 검색하려고 하는데 내 열의 데이터에 밑줄이 없습니다.
- 왜 쿼리가 테이블의 모든 기록을 제공하는 거죠?
샘플 데이터:
create table Manager(
id int
,managerid varchar(3)
,managername varchar(50)
);
insert into Manager(id,managerid,managername)values(1,'A1','Mangesh');
insert into Manager(id,managerid,managername)values(2,'A2','Sagar');
insert into Manager(id,managerid,managername)values(3,'C3','Ahmad');
insert into Manager(id,managerid,managername)values(4,'A4','Mango');
insert into Manager(id,managerid,managername)values(5,'B5','Sandesh');
<고객명>님의 WHERE다음과 같이 합니다.
WHERE mycolumn LIKE '%\_%' ESCAPE '\'
이는 Oracle이 이스케이프 문자를 지원하는 방법 중 하나입니다.를 '스케이프'로 합니다.escape키워드를 지정합니다.자세한 내용은 Oracle Docs에서 이 링크를 참조하십시오.
'_' ★★★★★★★★★★★★★★★★★」'%' are are の are 。LIKEoperated 의 operated .
_ 문자.문자 「」, 「1」의합니다.「 」로 하면,columnName LIKE '_abc' 하다, , 하다, 하다, 하다, 하다, 하다 행으로 결과를 수 'aabc','xabc','1abc','#abc' 아니다'abc','abcc','xabcd'기타 등등.
'%'는 0 할 때 수는 0 입니다. ,로 하면 음음 by음 that that 、 음 、 음 、 음 、 。columnName LIKE '%abc' 이렇게 해서 결과가 'abc','aabc','xyzabc' 등등, 아니다, 아니다'xyzabcd','xabcdd' ""로 않는 기타 문자열'abc'.
에는 ''로 요.'%_%'그러면 해당 열의 모든 행에 1개 이상의 문자(즉, 임의의 문자)가 값으로 지정됩니다.에 줄 도 줄 거죠._열 값을 입력합니다.
밑줄은 쿼리의 와일드카드이며, 1개의 임의의 문자를 나타냅니다.
때문에, 「 」는 할 수 없습니다.LIKE %_%는 "이 열에 임의의 문자가 하나 이상 포함된 모든 레코드를 주세요"를 의미합니다.
.[]★★★★
SELECT m.*
FROM Manager m
WHERE m.managerid LIKE '[_]%'
AND m.managername LIKE '%[_]%'
참조: LIKE (Transact-SQL)
와일드카드 문자를 특히 검색하려면 , 그 문자를 이스케이프 할 필요가 있습니다.
해서 할 수 요.ESCAPE을 의 절LIKE「」. 「」로 되어 있는 .ESCAPE절은 다음 와일드카드 문자를 "인증"합니다.
임의의 문자를 사용할 수 있습니다( 와일드카드 문자는 사용할 수 없습니다).은 부부 a a a를 한다.\은 많은 언어들도 사용하는이기 때문이다.
따라서 쿼리 결과는 다음과 같습니다.
select *
from Manager
where managerid LIKE '\_%' escape '\'
and managername like '%\_%' escape '\';
다른 문자도 사용할 수 있습니다.
select *
from Manager
where managerid LIKE '#_%' escape '#'
and managername like '%#_%' escape '#';
다음으로 SQLFiddle의 예를 나타냅니다.http://sqlfiddle.com/ #! 6/63e88/4
밑줄은 무언가에 대한 와일드카드입니다.예를 들어 'A_%'는 'A'에서 시작하는 모든 일치 항목을 찾고 그 뒤에 최소 1개의 추가 문자가 있습니다.
BigQuery에서 방법을 검색하는 경우:
밑줄 "_"는 단일 문자 또는 바이트와 일치합니다.
두 개의 백슬래시를 사용하여 "\", "_" 또는 "%"를 이스케이프할 수 있습니다.예를 들어 "\%"와 같이 입력합니다.raw 문자열을 사용하는 경우 백슬래시는 1개만 필요합니다.예를 들어 r"\% 입니다.
WHERE mycolumn LIKE '%\\_%'
출처 : https://cloud.google.com/bigquery/docs/reference/standard-sql/operators
다음과 같이 쿼리를 작성할 수 있습니다.
SELECT * FROM Manager
WHERE managerid LIKE '\_%' escape '\'
AND managername LIKE '%\_%' escape '\';
당신의 문제를 해결해 줄 것입니다.
언급URL : https://stackoverflow.com/questions/19588455/why-does-using-an-underscore-character-in-a-like-filter-give-me-all-the-results
'programing' 카테고리의 다른 글
| Dapper를 사용하여 삽입된 ID를 반환하려면 어떻게 해야 합니까? (0) | 2023.04.07 |
|---|---|
| 열 변경, 기본 제약 조건 추가 (0) | 2023.04.07 |
| 외부 키 제약 조건이 테이블을 참조하고 있으므로 테이블을 잘라낼 수 없습니까? (0) | 2023.04.07 |
| 외부 키 제약이 SQL 서버에 있는 경우에만 어떻게 삭제합니까? (0) | 2023.04.07 |
| SQL Server 프로시저/트리거 내에서 텍스트를 찾는 방법 (0) | 2023.04.07 |