MYSQL中INSTR、LOCATE和POSITION函数的使用方法
(2014-05-21 15:14:11)
标签:
mysql中locate函数用locate函数用法instr函数用法position函数用法mysql函数用法详解 |
分类: 数据库学习 |
一、LOCATE、POSITION、INSTR函数介绍
1、LOCATE函数
LOCATE(substr,str)
该函数表示返回字符串 str中子字符串substr的第一个出现位置;如若substr 不在str中,则返回值为0。
LOCATE(substr,str,pos)
该函数表示返回字符串 str中子字符串substr的第一个出现位置, 起始位置在pos。如若substr
不在str中,则返回值为0。
2、POSITION函数
POSITION(substr IN str)
该函数表示返回字符串 str中子字符串substr的第一个出现位置;如若substr 不在str中,则返回值为0。
3、INSTR函数
INSTR(str,substr)
该函数表示返回字符串 str中子字符串substr的第一个出现位置;如若substr
不在str中,则返回值为0。这和LOCATE()的双参数形式相同,只是参数的顺序被颠
倒。
注意:这个函数支持多字节字元,并且只有当至少有一个参数是二进制字符串时区分大小写。
二、测试示例
1、创建测试表
DROP TABLE IF EXISTS t_buffer_test;
CREATE TABLE `t_buffer_test` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8
2、插入测试数据
INSERT INTO t_buffer_test VALUES('15270874736 18754789638
18901456889')
3、利用函数查询处理
select LOCATE(' ',buffer) from t_buffer_test;
------
12
select POSITION(' ' IN buffer) from t_buffer_test;
------
12
select INSTR(buffer,' ') from t_buffer_test;
------
12
4、利用函数分隔数据
SELECT SUBSTR(buffer,1,LOCATE(' ',buffer)) from
t_buffer_test;
------
15270874736
5、利用函数结合循环分隔数据
DROP PROCEDURE IF EXISTS pr_fun_test;
CREATE PROCEDURE pr_fun_test()
proc_start:BEGIN
DROP table IF EXISTS t_buffer_tmp;
CREATE TABLE t_buffer_tmp(buffer VARCHAR(20) UNIQUE);
SELECT
WHILE LOCATE(',',@buffer)>0
DO
END WHILE;
INSERT INTO t_buffer_tmp
select @buffer;
END
SELECT * FROM t_buffer_tmp;
---------------------------
15270874736
18754789638
18901456889