SQL
2009.12.31 10:21

MySQL / Split String

조회 수 42172 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form

MySQL 함수 만들어서 사용하기

CREATE FUNCTION SPLIT_STRING(
  x text,
  delim varchar(32),
  pos int
)
RETURNS text
RETURN REPLACE(SUBSTRING(SUBSTRING_INDEX(x, delim, pos),
       LENGTH(SUBSTRING_INDEX(x, delim, pos -1)) + 1),
       delim, '');


CREATE FUNCTION SPLIT_STRING( x text, delim varchar(32), pos int )
RETURNS text
RETURN SUBSTRING_INDEX(SUBSTRING_INDEX(x, delim, pos), delim, -1);


SELECT SPLIT_STRING(string, delim, N);

mysql>  SELECT SPLIT_STRING('1|2|c|', '|', 1);
+--------------------------------+
| SPLIT_STRING('1|2|c|', '|', 1) |
+--------------------------------+
| 1                              |
+--------------------------------+
1 row in set (0.00 sec)



참고하기

mysql> SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('a|bb|ccc|dd', '|', 3), '|', -1);
+------------------------------------------------------------------+
| SUBSTRING_INDEX(SUBSTRING_INDEX('a|bb|ccc|dd', '|', 3), '|', -1) |
+------------------------------------------------------------------+
| ccc                                                              |
+------------------------------------------------------------------+
1 row in set (0.00 sec)


mysql> SELECT 'a|bb|cc|dd' RLIKE '((\\|).*){3}';
+-----------------------------------+
| 'a|bb|cc|dd' RLIKE '((\\|).*){3}' |
+-----------------------------------+
|                                 1 |
+-----------------------------------+
1 row in set (0.00 sec)

mysql> SELECT 'a|bb|cc|dd' RLIKE '((\\|).*){4}';
+-----------------------------------+
| 'a|bb|cc|dd' RLIKE '((\\|).*){4}' |
+-----------------------------------+
|                                 0 |
+-----------------------------------+
1 row in set (0.00 sec)



SUBSTRING_INDEX(str,delim,count)

Returns the substring from string str before count occurrences of the delimiter delim. If count is positive, everything to the left of the final delimiter (counting from the left) is returned. If count is negative, everything to the right of the final delimiter (counting from the right) is returned. SUBSTRING_INDEX() performs a case-sensitive match when searching for delim.

mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'


Thanks to http://blog.fedecarg.com/2009/02/22/mysql-split-string-function/

TAG •

List of Articles
번호 카테고리 제목 글쓴이 날짜 조회 수
137 Linux /etc/vsftpd/vsftpd.conf 비트겐스 2010.01.04 30348
136 Favorites Source Insight Macro 비트겐스 2009.12.31 18536
» SQL MySQL / Split String 비트겐스 2009.12.31 42172
134 Device Driver SB16C1054 Device Driver (rs-485) - Kernel 2.6.x secret 비트겐스 2009.12.24 0
133 Favorites My .vimrc 비트겐스 2009.12.24 17619
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 ... 39 Next
/ 39