음머어's 까망별

블로그 이미지
무지 인간의 첫 걸음..
by 까망별 음머어
  • 303,486Total hit
  • 137Today hit
  • 147Yesterday hit

'SUBSTRING_INDEX'에 해당되는 글 1건

  1. 2008.12.26
    [MySQL] 잊고 있었던 문자열 함수들

그 동안 알고는 있었지만 정작 써먹지 않았던,
문자열 함수 몇개를 적고 넘어갈까 한다.

다년간에 걸친 니코틴과 카페인 섭취로 인하여 뇌기능이 비약적으로 떨어진 것을
메모를 통해 강제 각인 시키고자 한다 할까? (-_-);;

# 아래는 MySQL 한글 레펀런스의 문자열 함수 페이지를 링크해 둔 것이다.
<<Link :MySQL 한글 레퍼런스 - 스트링함수>>


# 함수 설명

1. LEFT, RIGHT
이눔의 함수들은 문자열의 오른쪽, 왼쪽을 끊어 오는 기능을 한다.

<<기억 안 났을 때>>
이걸 기억 못해서,
맨날 LEFT는 SUBSTRING 함수를 써서 일일이 끊어 왔고,
RIGHT는 LENGTH함수를 써서 그만큼 SUBSTRING으로 끊어오거나, REVERSE를 사용해서 비교했었다..
(ㅠ,.ㅠ)

<<사용방법>>
LEFT(문자열, 끊어올 문자 개수)
RIGHT(문자열, 끊어올 문자 개수)


<<실행화면>>

 mysql> SELECT LEFT('1234567890', 5);
+-----------------------+
| LEFT('1234567890', 5)   |
+-----------------------+
| 12345                          |
+-----------------------+
1 row in set (0.00 sec)

mysql> SELECT RIGHT('1234567890', 5);
+------------------------+
| RIGHT('1234567890', 5)   |
+------------------------+
| 67890                            |
+------------------------+
1 row in set (0.00 sec)




2. SUBSTRING_INDEX
찾고자 하는 문자열의 이전 문자열 전부를 끊어 온다.
요눔의 매력 포인트는, 찾고자 하는 문자열의 순번을 입력할 수 있다는 것인데,
이것은 몇번째 놈 이전의 데이터를 가져올 것이냐 하는 것을 결정할 수 있음을 의미한다.

<<기억 안 났을 때>>
나는 주로,
LOCATE함수로 포지션을 찾아서 다시 SUBSTRING 함수로 이를 다시 끊어오는 방법을 사용했었는데..
내가 .. 미쳤었나봅니다~ (ㅠ,.ㅠ);;

<<사용방법>>
SUBSTRING_INDEX(문자열, 찾고자 하는 문자열, 찾고자 하는 문자열의 순번)

<<실행화면>>

 mysql> SELECT SUBSTRING_INDEX('12345674890', '4',1);
+---------------------------------------+
| SUBSTRING_INDEX('12345674890', '4',1) |
+---------------------------------------+
| 123                                                     |
+---------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT SUBSTRING_INDEX('12345674890', '4',2);
+---------------------------------------+
| SUBSTRING_INDEX('12345674890', '4',2) |
+---------------------------------------+
| 1234567                                               |
+---------------------------------------+
1 row in set (0.00 sec)



3. TRIM
이거 앞뒤 공백 문자만 지워주는 녀석인줄 알았는데,
(※주의 : 문자열 중간에 끼어있는 공백은 못 지운다. -0-;;)
의외로 다른 문자도 지워주는 쎈스가 있는 녀석이다....

문자열의 앞뒤에 특정 문자패턴이 반복적으로 입력되어 있다면,
그 녀석을 날려버릴 수가 있다.


<<기억 안 났을 때>>
대표적인 예가 ZEROFILL된 숫자가 문자열화 된 것이 있는데,
이럴 경우 나는 REPLACE해주는 방식을 사용했더랬지....

문제는 REPLACE의 경우 왼쪽에서, 또는 오른쪽에서 선택적인 사용을 할 수 없기 때문에,
만약 뒤에 0이 있다면 대략난감 (-_-);;;;

아.. 그리고 자매품 RTRIM, LTRIM도 있지만,
이것들은 공백만 제거하므로 주의해서 사용할 것 -0-/

<<사용방법>>
TRIM({LEADING | TRAILING | BOTH} 바꾸고자 하는 문자열 FROM 문자열)
BOTH : 좌우로 모두 제거
LEADING : 좌측만 제거
TRAILING : 우측만 제거

<<실행화면>>

 mysql> SELECT TRIM(BOTH '0' FROM '0001200034000' );
+--------------------------------------+
| TRIM(BOTH '0' FROM '0001200034000' ) |
+--------------------------------------+
| 1200034                                              |
+--------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT TRIM(LEADING'0' FROM '0001200034000' );
+----------------------------------------+
| TRIM(LEADING'0' FROM '0001200034000' ) |
+----------------------------------------+
| 1200034000                                            |
+----------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT TRIM(TRAILING '0' FROM '0001200034000' );
+------------------------------------------+
| TRIM(TRAILING '0' FROM '0001200034000' ) |
+------------------------------------------+
| 0001200034                                               |
+------------------------------------------+
1 row in set (0.00 sec)



머리가 나쁘면 몸이 피곤하고,
머리를 안 쓰면  삼대가 고생하며,
머리를 안 감으면 냄새가 난다(?) <-- 모여 이거 (-_-);;


고로, 아는 것을 까먹지 말자.....


저작자 표시 비영리
신고
TRACKBACK 0 AND COMMENT 0

ARTICLE CATEGORY

모든 이야기 (77)
독백 (22)
MySQL (25)
Oracle (7)
영화 (6)
Linux (3)
DW(Data Warehouse) (0)
(7)
음악 (1)
Python (3)
Postgresql (2)

ARCHIVE