2021-11-30 20:42 작성
My SQL basic 메모
Table of contents
BETWEEN 연산자
value BETWEEN low AND high;
BETWEEN
연산자는 임의의 값이 범위 안에 존재하는지 여부를 확인하는 논리 연산자다. 범위 안에 존재할 경우 1(true)을 반환하고 그렇지 않을 경우 0(false)을 반환한다. 만약, value
, low
혹은 high
중 하나가 NULL
일 경우 연산자는 NULL
을 반환한다.
SELECT
orderNumber,
requiredDate,
status
FROM
orders
WHERE
requireddate BETWEEN
CAST('2003-01-01' AS DATE) AND
CAST('2003-01-31' AS DATE);
output:
orderNumber | requiredDate | status |
---|---|---|
10100 | 2003-01-13 | Shipped |
10101 | 2003-01-18 | Shipped |
10102 | 2003-01-18 | Shipped |
NOT BETWEEN
BETWEEN
연산자 앞에 NOT
이 붙어 BETWEEN의 연산값의 역을 반환한다.
LIKE 연산자
LIKE
연산자는 임의의 문자열이 특정 패턴을 포함하는지 여부를 테스트하는 논리 연산자다.
expression LIKE pattern ESCAPE escape_character
expression
이 pattern
에 일치하게 되면 LIKE
연산자는 1(true)
를 반환하고 그렇지 않으면 0(false)
를 반환한다.
Wildcard | Description |
---|---|
% | 0 ~ 여러개의 문자 |
_ | 1 개 문자 |
예를 들어, s%
는 sun
과 six
와 같이 s
로 시작하는 어떤 문자열이라도 반환한다. se_
는 see
와 sea
와 같이 se
다음에 하나의 추가 character가 오는 문자열을 반환한다.
pattern이 와일드카드 character를 포함하고 있고 이것을 일반적 character로 다루길 원할 때는 ESCAPE
절을 사용할 수 있다.
일반적으로 LIKE
연산자는 SELECT
, DELETE
그리고 UPDATE
구문의 WHERE
절에서 사용할 수 있다.
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
lastname LIKE '%on%';
output: on
부분 문자열을 포함하는 모든 데이터를 찾는다.
employeeNumber | lastName | firstName |
---|---|---|
1056 | Patterson | Mary |
1088 | Patterson | William |
1102 | Bondur | Gerard |
1166 | Thompson | Leslie |
1216 | Patterson | Steve |
1337 | Bondur | Loui |
1504 | Jones | Barry |
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
firstname LIKE 'M_ry';
output:
employeeNumber | lastName | firstName |
---|---|---|
1056 | Patterson | Mary |
NOT LIKE 연산자
특정 패턴에 매칭되는 데이터를 제외한 정보를 얻을 수 있다.
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
lastName NOT LIKE 'B%';
output: B%
패턴에 맞는 데이터를 제외한 정보를 제공한다.
employeeNumber | lastName | firstName |
---|---|---|
1002 | Murphy | Diane |
1056 | Patterson | Mary |
1076 | Firrelli | Jeff |
1088 | Patterson | William |
1165 | Jennings | Leslie |
1166 | Thompson | Leslie |
1188 | Firrelli | Julie |
1216 | Patterson | Steve |
1286 | Tseng | Foon Yue |
1323 | Vanauf | George |
1370 | Hernandez | Gerard |
1401 | Castillo | Pamela |
1504 | Jones | Barry |
1611 | Fixter | Andy |
1612 | Marsh | Peter |
1619 | King | Tom |
1621 | Nishi | Mami |
1625 | Kato | Yoshimi |
1702 | Gerard | Martin |
ESCAPE 절과 LIKE 연산자
때때로 10%
, _20
등과 같은 데이터를 처리해야 하는 순간이 있는데 해당 특수문자들은 모두 와일드카드로 쓰이고 있기 때문에 ESCAPE
처리를 해 일반 문자로 보이도록 변경해주어야 한다. 만약 escape 문자를 명시적으로 지정하지 않으면 백슬래시(\
)가 기본 escape 문자가 된다.
예를 들어, 만약 _20
을 포함하는 데이터를 찾을 경우에 %\_20%
을 사용할 수 있다.
SELECT
productCode,
productName
FROM
products
WHERE
productCode LIKE '%\_20%';
output: 기본 escape 문자(\
)
productCode | productName |
---|---|
S10_2016 | 1996 Moto Guzzi 1100i |
S24_2000 | 1960 BSA Gold Star DBD34 |
S24_2011 | 18th century schooner |
S24_2022 | 1938 Cadillac V-16 Presidential Limousine |
S700_2047 | HMS Bounty |
SELECT
productCode,
productName
FROM
products
WHERE
productCode LIKE '%$_20%' ESCAPE '$';
output: 지정 escape 문자($
)
productCode | productName |
---|---|
S10_2016 | 1996 Moto Guzzi 1100i |
S24_2000 | 1960 BSA Gold Star DBD34 |
S24_2011 | 18th century schooner |
S24_2022 | 1938 Cadillac V-16 Presidential Limousine |
S700_2047 | HMS Bounty |