MySQL - LIKE

임재현·2021년 5월 5일
0

MySQL

목록 보기
25/52

UDEMY - The Ultimate MySQL Bootca…The Ultimate MySQL Bootcamp: Go from SQL Beginner to Expert를 수강하며 정리한 글

LIKE

Better Searching

It basically allows us to perform better searching of our data.

this is ignoring the first part of the query the select start from the update or the daily or whatever. So blank where author name like and then in quotes I have this percent sign da percent sign(%da%).

What this is going to do is find where the author's first name has the letters 'da' in it.
%signs are know as 'Wild Cards'. So that's basically the way that we specify we want to find author first names where there is something anything at all. It's wild card so any characters and then these two exact characters 'DA'and anything after wards.

그러니깐 와일드 카드가 들어간 자리에는 어떤 문자가 와도 되고, 그 사이에 da만 껴있으면 된다.(대문자인지 소문자 인지도 상관X) 와일드카드가 앞에만 써있으면 (%da) 앞에 아무문자나 오다가 뒤에 da가 오면 그 문자를 찾는 거고, 와일드카드가 뒤에만 있으면 (da%) da로 시작해 뒤에 아무문자나 있는 것을 찾는거다. 와일드 카드가 앞뒤로 붙어있으면 (%da%) 앞, 뒤 혹은 중간에 da가 들어간 모든 문자를 찾는 거다.

그 전에는 WHERE조건을 쓸 때 WHERE author_fname = 'David' 이런식으로 구체적인 이름을 알아야 했지만 LIKE를 활용하면 조금 애매하게 아는 것도 찾을 수 있다.

  • da가 들어간 이름 전부
mysql> SELECT author_fname FROM books WHERE author_fname LIKE '%da%';
+--------------+
| author_fname |
+--------------+
| Dave         |
| Dave         |
| Dave         |
| David        |
| David        |
| Dan          |
| Freida       |
+--------------+
7 rows in set (0.00 sec)
  • da로 시작하는 이름
mysql> SELECT author_fname FROM books WHERE author_fname LIKE 'da%';
+--------------+
| author_fname |
+--------------+
| Dave         |
| Dave         |
| Dave         |
| David        |
| David        |
| Dan          |
+--------------+
6 rows in set (0.00 sec)
  • da로 끝나는 이름
mysql> SELECT author_fname FROM books WHERE author_fname LIKE '%DA';
+--------------+
| author_fname |
+--------------+
| Freida       |
+--------------+
1 row in set (0.00 sec)
  • title에 'the'가 들어간 책들 찾기
mysql> SELECT title FROM books WHERE title LIKE '%the%';
+-------------------------------------------+
| title                                     |
+-------------------------------------------+
| The Namesake                              |
| A Hologram for the King: A Novel          |
| The Circle                                |
| The Amazing Adventures of Kavalier & Clay |
| Consider the Lobster                      |
| Lincoln In The Bardo                      |
+-------------------------------------------+
6 rows in set (0.00 sec)

Like에는 %말고 또다른 Wild Card가 있다. _이다. 이건 실사용 예를 보는게 이해하기 빠르다.

mysql> SELECT title, stock_quantity FROM books WHERE stock_quantity LIKE '____';
+----------------------+----------------+
| title                | stock_quantity |
+----------------------+----------------+
| Lincoln In The Bardo |           1000 |
+----------------------+----------------+
1 row in set (0.00 sec)


mysql> SELECT title, stock_quantity FROM books WHERE stock_quantity LIKE '__';
+-----------------------------------------------------+----------------+
| title                                               | stock_quantity |
+-----------------------------------------------------+----------------+
| The Namesake                                        |             32 |
| Norse Mythology                                     |             43 |
| Interpreter of Maladies                             |             97 |
| The Circle                                          |             26 |
| The Amazing Adventures of Kavalier & Clay           |             68 |
| Just Kids                                           |             55 |
| What We Talk About When We Talk About Love: Stories |             23 |
| Where I'm Calling From: Selected Stories            |             12 |
| White Noise                                         |             49 |
| Cannery Row                                         |             95 |
| Consider the Lobster                                |             92 |
| 10% Happier                                         |             29 |
+-----------------------------------------------------+----------------+
12 rows in set (0.00 sec)

첫번째 SELECT 문에서는 WHERE stock_quantity LIKE '____'_를 4개를 줬고, 두번째 SELECT문에서는 WHERE stock_quantity LIKE '__'_를 2개를 줬다. _는 정확한 자릿수를 고르고 싶을 때 쓰는 와일드카드인 것이다.

문자에도 적용 가능

mysql> SELECT title FROM books WHERE title LIKE '_________';
+-----------+
| title     |
+-----------+
| Just Kids |
| fake_book |
+-----------+
2 rows in set (0.00 sec)

++ What If

  • 'searching for a book with a '%' in it'
    or
  • 'searching for a book with a '_' in it'.

=> 백슬래쉬 \를 이용하면 된다.

mysql> SELECT title FROM books WHERE title LIKE '%\%%';
+-------------+
| title       |
+-------------+
| 10% Happier |
+-------------+
1 row in set (0.00 sec)
profile
임재현입니다.

0개의 댓글