欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

mysql函数 locate substring substring_index

shiping1 的头像

 

一、locate函数使用

1LOCATE(substr,str) 

返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0:
mysql> SELECT LOCATE(’bar’, ‘foobarbar’);
-> 4
mysql> SELECT LOCATE(’xbar’, ‘foobar’);
-> 0 

 

2、LOCATE(substr,str,pos) 

返回子串 substr 在字符串 str 中的第 pos 位置后第一次出现的位置。如果 substr 不在 str 中返回 0 :
mysql> SELECT LOCATE(’bar’, ‘foobarbar’,5);
-> 7 

 

 

 

二、substring函数使用

1、字符串截取:substring(str, pos); substring(str, pos, len) 

1.1 从字符串的第 4 个字符位置开始取,直到结束。

mysql> select substring('sqlstudy.com', 4);

+------------------------------+

| substring('sqlstudy.com', 4) |

+------------------------------+

| study.com                    |

+------------------------------+

 

1.2 从字符串的第 4 个字符位置开始取,只取 2 个字符。

mysql> select substring('sqlstudy.com', 4, 2);

+---------------------------------+

| substring('sqlstudy.com', 4, 2) |

+---------------------------------+

| st                              |

+---------------------------------+

 

1.3 从字符串的第 4 个字符位置(倒数)开始取,直到结束。

mysql> select substring('sqlstudy.com', -4);

+-------------------------------+

| substring('sqlstudy.com', -4) |

+-------------------------------+

| .com                          |

+-------------------------------+

 

1.4 从字符串的第 4 个字符位置(倒数)开始取,只取 2 个字符。

mysql> select substring('sqlstudy.com', -4, 2);

+----------------------------------+

| substring('sqlstudy.com', -4, 2) |

+----------------------------------+

| .c                               |

+----------------------------------+

 

2、substring_index(str,delim,count) 

 2.1截取第二个 '.' 之前的所有字符。

mysql> select substring_index('www.sqlstudy.com.cn', '.', 2);

+------------------------------------------------+

| substring_index('www.sqlstudy.com.cn', '.', 2) |

+------------------------------------------------+

www.sqlstudy                                   |

+------------------------------------------------+

 

2.2 截取第二个 '.' (倒数)之后的所有字符。

mysql> select substring_index('www.sqlstudy.com.cn', '.', -2);

+-------------------------------------------------+

| substring_index('www.sqlstudy.com.cn', '.', -2) |

+-------------------------------------------------+

| com.cn                                          |

+-------------------------------------------------+

 

2.3 如果在字符串中找不到 delim 参数指定的值,就返回整个字符串

mysql> select substring_index('www.sqlstudy.com.cn', '.coc', 1);

+---------------------------------------------------+

| substring_index('www.sqlstudy.com.cn', '.coc', 1) |

+---------------------------------------------------+

www.sqlstudy.com.cn                               |

+---------------------------------------------------+

 

 

三、实例应用

 

查看原始表:SELECT UserID FROM `tbl_config_policyinfo`

结果:

 

 

 

UserID

938,920,915

924,937,928

912,938,919,920

912,920,941

-1

-1

-1

-1

-1

-1

 

使用group_concat将结果放入一列。

使用语句:SELECT GROUP_CONCAT(UserID)  FROM `tbl_config_policyinfo` INTO @a 

查看结果:SELECT @a AS UserID

 

 

 

UserID

-1,-1,912,920,941,938,920,915,924,937,928,-1,912,938,919,920,-1,-1,-1

 

使用locat和substring来取字符

语句:SELECT LOCATE(',',@a,1)

 

 

 

LOCATE(',',@a,1)

3

 

 

语句:SELECT SUBSTRING(@a,1,2)

 

 

 

substring(@a,1,2)

-1

 

来自 http://mxiaoxiang.blog.51cto.com/1907139/934333

普通分类: