加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

MYSQL中INSTR、LOCATE和POSITION函数的使用方法

(2014-05-21 15:14:11)
标签:

mysql中locate函数用

locate函数用法

instr函数用法

position函数用法

mysql函数用法详解

分类: 数据库学习

       在MYSQL中,我们会遇到在某个字符串中查找指定的某个或几个字符,一般情况下,我们可以通过LIKE模糊查询来实现查找过程,那还有没有其他函数也能实现类似的查找功能呢?下面我们来看看有类似功能的几个函数吧。本文主要测试了LOCATE函数的用法。

 

一、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` (
  `buffer` varchar(1000) DEFAULT NULL
) 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  buffer into @buffer from t_buffer_test;
WHILE LOCATE(',',@buffer)>0
DO
 SET @user_tel = SUBSTRING(@buffer,1,LOCATE(',',@buffer)-1);
 INSERT INTO t_buffer_tmp
 SELECT @user_tel;
 SET @buffer=SUBSTRING(@buffer,LOCATE(',',@buffer)+1,(LENGTH(@buffer)-LOCATE(',',@buffer)));
 
END WHILE;
INSERT INTO t_buffer_tmp
select @buffer;

END

SELECT * FROM t_buffer_tmp;
---------------------------
15270874736
18754789638
18901456889

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有