# LIKE 연산자

<mark style="color:yellow;">**특정 단어가 들어있는지 검색하려면 LIKE**</mark>

\
WHERE 조건식 자리에는 = > < 이런거 넣을 수 있다고 했는데

LIKE 도 넣을 수 있습니다. 그거 쓰면 원하는 단어 검색이 가능합니다.

지난시간에 만든 테이블에서 계속 진행해볼 것인데 &#x20;

저기서 상품명이 '소파'가 들어있는걸 찾고 싶다면 WHERE 조건식에서 LIKE 문법 사용하면 됩니다.

```sql
SELECT * FROM product
WHERE 상품명 LIKE '소파' 
```

WHERE 뒤에 **컬럼명 LIKE '값'** 이런 식으로 작성하면 됩니다.

LIKE 뒤에 검색어를 적으면 그 글자만 정확히 들어있는 행만 찾아주는데 그럼 아무 쓸데없겠죠?

그래서 % 기호를 붙입니다.

&#x20;

```sql
SELECT * FROM product
WHERE 상품명 LIKE '%소파%' 
```

% 기호는 아무글자라는 뜻입니다. 전문용어로 와일드카드라고 합니다.&#x20;

그래서 위 처럼 작성하면 '아무글자 + 소파 + 아무글자' 조합에 일치하는 행을 전부 찾아줍니다.&#x20;

&#x20;

<figure><img src="https://3814826491-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJyHOwztPxBT3bLpisjCt%2Fuploads%2FwVE0ZcpUcpKBVNQzdtej%2FScreenshot_19.png?alt=media&#x26;token=cabdae80-846d-4366-bfb6-0badc36ac0ba" alt=""><figcaption></figcaption></figure>

(참고)

\- 문자검색 문법이라 문자가 저장된 컬럼에서만 검색가능합니다.&#x20;

\- CHAR(6) 데이터타입의 경우 총 6자를 저장할 수 있는데 4자만 입력해도 **나머지 뒷부분 2자를 공백으로** **꽉 채워줍니다.**

예를 들어서 '가죽소파'를 저장해도 '가죽소파  ' 이렇게 저장됩니다.

그래서 CHAR 컬럼은 % 써서 검색시 의도와 다르게 동작할 수 있습니다.&#x20;

**'%소파'** 이렇게 검색해도 **'가죽소파  '** 이건 못찾음&#x20;

<mark style="color:yellow;">**\_ 기호**</mark>

%이건 아무글자를 뜻하는데 \_ 이것도 아무글자를 뜻합니다.

차이점이 있는데&#x20;

% 이건 아무글자인데 글자수 제한이 없습니다. (0자도 포함)

근데 \_ 이건 아무글자 1개를 뜻합니다.

그래서 정확히 글자수까지 포함해서 검색하고 싶으면 \_ 쓰면 됩니다.&#x20;

```sql
SELECT * FROM product
WHERE 상품명 LIKE '__소파' 
```

하지만 좋다고 % 기호 많이 쓰면 성능저하가 일어날 수 있습니다.

OR, 등호, 부등호 쓰는게 가능한 경우 사용하도록 합시다.&#x20;

%쓰면 인덱스 활용을 많이 못해서 찾을 때 오래걸리는 건데 자세한건 인덱스 원리 배울 때 알아봅시다.&#x20;

**Q1. 'Green'으로 시작해서 'chair'로 끝나는 상품명을 검색하려면?**&#x20;

**Q2. 위처럼 상품명에 '소파' 가 들어있거나 'chair'가 들어있는 모든 상품을 검색해봅시다.**&#x20;

**Q3. 상품명에 '소파'가 들어있는데 '나무'는 들어있지 않은 모든 상품을 검색해봅시다.**&#x20;
