`
cindylu520
  • 浏览: 148033 次
  • 性别: Icon_minigender_2
  • 来自: 大连
社区版块
存档分类
最新评论

mysql常用字符串操作函数大全,以及实例

阅读更多

测试表  
CREATE TABLE `string_test` (  
 `id` int(11) NOT NULL auto_increment COMMENT '用户ID',  
 `name` varchar(50) NOT NULL default '' COMMENT '名称',  
 `job` varchar(23) NOT NULL COMMENT '工作',  
 `sex` tinyint(1) NOT NULL default '1' COMMENT '性别',  
 `hobby` varchar(100) character set utf8 collate utf8_unicode_ci default NULL COMMENT '爱好',  
 PRIMARY KEY  (`id`)  
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;  
  
测试数据  
INSERT INTO `string_test` (`id`, `name`, `job`, `sex`, `hobby`) VALUES  
(1, 'tank', '农民工', 1, '军棋,游戏,fishing'),  
(2, 'zhang', 'DUCK', 0, 'fly,make firend'),  
(3, 'ying', 'no job', 1, 'flying,driving,testing'),  
(4, 'tankzhang', 'love your love', 1, 'i love you');  

id name job sex hobby
1 tank 农民工 1 军棋,游戏,fishing
2 zhang DUCK 0 fly,make firend
3 ying no job 1 flying,driving,testing
4 tankzhang love your love 1 i love you

二,mysql字符串操作函数

1,UPPER和UCASE

返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成大写。该函数对多字节是可靠的。

mysql> select name,UPPER(name) from string_test where name='tank';
+------+-------------+
| name | UPPER(name) |
+------+-------------+
| tank | TANK        |
+------+-------------+
1 row in set (0.00 sec)

2,LOWER和LCASE

返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成小写。该函数对多字节是可靠的。

mysql> select sex,LCASE(job) from string_test where job='DUCK';
+------+------------+
| sex  | LCASE(job) |
+------+------------+
|    1 | duck       |
+------+------------+
1 row in set (0.00 sec)

3,FIND_IN_SET(str,strlist)

如果字符串str在由N子串组成的表strlist之中,返回一个1到N的值。一个字符串表是被“,”分隔的子串组成的一个字符串。如果第一个参数是一个常数字符串并且第二个参数是一种类型为SET的列,FIND_IN_SET()函数被优化而使用位运算!如果str不是在strlist里面或如果strlist是空字符串,返回0。如果任何一个参数是NULL,返回NULL。如果第一个参数包含一个“,”,该函数将工作不正常。看面是二种不同的效果,可以看一下

mysql> SELECT id,name FROM string_test WHERE find_in_set('fly',hobby);
+----+-------+
| id | name  |
+----+-------+
|  2 | zhang |
+----+-------+
1 row in set (0.00 sec)

mysql> SELECT id,name FROM string_test WHERE hobby like 'fly%';
+----+-------+
| id | name  |
+----+-------+
|  2 | zhang |
|  3 | ying  |
+----+-------+
2 rows in set (0.00 sec)

4,FIELD(str,str1,str2,str3,…)

返回str在str1, str2, str3, …清单的索引。如果str没找到,返回0。FIELD()是ELT()反运算。

mysql> SELECT id, name, FIELD( id, name, sex, job, hobby )
 -> FROM string_test where id < 4;
+----+-------+------------------------------------+
| id | name  | FIELD( id, name, sex, job, hobby ) |
+----+-------+------------------------------------+
|  1 | tank  |                                  2 |
|  2 | zhang |                                  0 |
|  3 | ying  |                                  0 |
+----+-------+------------------------------------+
3 rows in set (0.00 sec)

5.ELT(N,str1,str2,str3,…)

如果N= 1,返回str1,如果N= 2,返回str2,等等。如果N小于1或大于参数个数,返回NULL。ELT()是FIELD()反运算。

mysql> SELECT id, name, ELT(1, id, name, sex, job, hobby ) FROM string_test where id < 4;
+----+-------+------------------------------------+
| id | name  | ELT(1, id, name, sex, job, hobby ) |
+----+-------+------------------------------------+
|  1 | tank  | 1                                  |
|  2 | zhang | 2                                  |
|  3 | ying  | 3                                  |
+----+-------+------------------------------------+
3 rows in set (0.00 sec)

mysql> SELECT id, name, ELT(2, id, name, sex, job, hobby ) FROM string_test where id < 4;
+----+-------+------------------------------------+
| id | name  | ELT(2, id, name, sex, job, hobby ) |
+----+-------+------------------------------------+
|  1 | tank  | tank                               |
|  2 | zhang | zhang                              |
|  3 | ying  | ying                               |
+----+-------+------------------------------------+
3 rows in set (0.00 sec)

6,REPLACE(str,from_str,to_str)

返回字符串str,其字符串from_str的所有出现由字符串to_str代替。

mysql> SELECT id,REPLACE(hobby,"firend",'living') FROM string_test WHERE id = 2;

+----+----------------------------------+
| id | REPLACE(hobby,"firend",'living') |
+----+----------------------------------+
|  2 | fly,make living                  |
+----+----------------------------------+
1 row in set (0.00 sec)

7,REPEAT(str,count)

返回由重复countTimes次的字符串str组成的一个字符串。如果count <= 0,返回一个空字符串。如果str或count是NULL,返回NULL。

mysql> SELECT id,REPEAT(name,2) FROM string_test WHERE id > 1 and id < 4;
+----+----------------+
| id | REPEAT(name,2) |
+----+----------------+
|  2 | zhangzhang     |
|  3 | yingying       |
+----+----------------+
2 rows in set (0.00 sec)

8,REVERSE(str)

返回颠倒字符顺序的字符串str。

 mysql> SELECT id,reverse(name) FROM string_test WHERE id > 1 and id < 4;
+----+---------------+
| id | reverse(name) |
+----+---------------+
|  2 | gnahz         |
|  3 | gniy          |
+----+---------------+
2 rows in set (0.00 sec)

9,INSERT(str,pos,len,newstr)

返回字符串str,在位置pos起始的子串且len个字符长得子串由字符串newstr代替。

mysql> select id,name,INSERT(hobby,10,6,'living') from string_test where id = 2;

+----+-------+-----------------------------+
| id | name  | INSERT(hobby,10,6,'living') |
+----+-------+-----------------------------+
|  2 | zhang | fly,make living             |
+----+-------+-----------------------------+
1 row in set (0.00 sec)

10,SUBSTRING(str FROM pos)

从字符串str的起始位置pos返回一个子串。下面的sub2没有值,因为mysql数据库的下标是从1开始的。

mysql> SELECT id, substring( hobby, 1, 6) AS sub1, substring( hobby from 0 for 8
 ) AS sub2,substring( hobby,2) AS sub3, substring( hobby from 4 ) AS sub4 FROM s
tring_test WHERE id =4;
+----+--------+------+-----------+---------+
| id | sub1   | sub2 | sub3      | sub4    |
+----+--------+------+-----------+---------+
|  4 | i love |      |  love you | ove you |
+----+--------+------+-----------+---------+
1 row in set (0.00 sec)

11,SUBSTRING_INDEX(str,delim,count)

返回从字符串str的第count个出现的分隔符delim之后的子串。如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如果count是负数,返回最后的分隔符到右边的所有字符(从右边数)。

mysql> SELECT id,SUBSTRING_INDEX(hobby,',',2) as test1,SUBSTRING_INDEX(hobby,','
,-1) as test2 FROM string_test WHERE id = 3;
+----+----------------+---------+
| id | test1          | test2   |
+----+----------------+---------+
|  3 | flying,driving | testing |
+----+----------------+---------+
1 row in set (0.01 sec)

12,LTRIM(str)

返回删除了其前置空格字符的字符串str。

mysql> SELECT id,LTRIM(job) FROM string_test WHERE id = 4;
+----+----------------+
| id | LTRIM(job)     |
+----+----------------+
|  4 | love your love |
+----+----------------+
1 row in set (0.00 sec)

13,RTRIM(str)

返回删除了其拖后空格字符的字符串str。

mysql> SELECT id,RTRIM(job) FROM string_test WHERE id = 4;
+----+----------------+
| id | RTRIM(job)     |
+----+----------------+
|  4 | love your love |
+----+----------------+
1 row in set (0.00 sec)

14,TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)

返回字符串str,其所有remstr前缀或后缀被删除了。如果没有修饰符BOTH、LEADING或TRAILING给出,BOTH被假定。如果remstr没被指定,空格被删除。

mysql> select trim(' test  ');
+-----------------+
| trim(' test  ') |
+-----------------+
| test            |
+-----------------+
1 row in set (0.01 sec)

mysql> SELECT id,TRIM(LEADING "love" from job) as test1,TRIM(BOTH "love" from jo
b) as test2,TRIM(TRAILING "love" from job) as test3 FROM string_test WHERE id =
4
 -> ;
+----+------------+--------+------------+
| id | test1      | test2  | test3      |
+----+------------+--------+------------+
|  4 |  your love |  your  | love your  |
+----+------------+--------+------------+
1 row in set (0.00 sec)

15,MID(str,pos,len)

从字符串str返回一个len个字符的子串,从位置pos开始。使用FROM的变种形式是ANSI SQL92语法。

mysql>  SELECT id, mid( hobby, 1, 6 ) AS sub1, mid( hobby
 -> FROM 0
 -> FOR 8 ) AS sub2, mid( hobby, 2 ) AS sub3, mid( hobby
 -> FROM 4 ) AS sub4
 -> FROM string_test
 -> WHERE id =4 ;
+----+--------+------+-----------+---------+
| id | sub1   | sub2 | sub3      | sub4    |
+----+--------+------+-----------+---------+
|  4 | i love |      |  love you | ove you |
+----+--------+------+-----------+---------+
1 row in set (0.00 sec)

mysql>

16,LPAD(str,len,padstr)

返回字符串str,左面用字符串padstr填补直到str是len个字符长。

mysql> SELECT id,LPAD(name,11,"zhang ") FROM string_test WHERE id = 3;
+----+------------------------+
| id | LPAD(name,11,"zhang ") |
+----+------------------------+
|  3 | zhang zying            |
+----+------------------------+
1 row in set (0.00 sec)

17,RPAD(str,len,padstr)

返回字符串str,右面用字符串padstr填补直到str是len个字符长。

mysql> SELECT id,RPAD(name,11," ying") FROM string_test WHERE id = 2;
+----+-----------------------+
| id | RPAD(name,11," ying") |
+----+-----------------------+
|  2 | zhang ying            |
+----+-----------------------+
1 row in set (0.00 sec)

18,LEFT(str,len)

返回字符串str的最左面len个字符。

mysql> SELECT id,left(job,4) FROM string_test WHERE id = 4;
+----+-------------+
| id | left(job,4) |
+----+-------------+
|  4 | love        |
+----+-------------+
1 row in set (0.00 sec)

19,RIGHT(str,len)

返回字符串str的最右面len个字符。

mysql> SELECT id,right(job,4) FROM string_test WHERE id = 4;
+----+--------------+
| id | right(job,4) |
+----+--------------+
|  4 | love         |
+----+--------------+
1 row in set (0.00 sec)

20,位置控制函数

POSITION(substr IN str)
返回子串substr在字符串str第一个出现的位置,如果substr不是在str里面,返回0.

LOCATE(substr,str,pos)
返回子串substr在字符串str第一个出现的位置,从位置pos开始。如果substr不是在str里面,返回0。

INSTR(str,substr)
返回子串substr在字符串str中的第一个出现的位置。这与有2个参数形式的LOCATE()相同,除了参数被颠倒。

mysql> SELECT id,INSTR(job,"you") as instr,LOCATE('love',job,3) as locate,POSITI
ON('love' in job) as position FROM string_test WHERE id = 4;
+----+-------+--------+----------+
| id | instr | locate | position |
+----+-------+--------+----------+
|  4 |     6 |     11 |        1 |
+----+-------+--------+----------+
1 row in set (0.00 sec)

21,得到字符串长度的函数

LENGTH(str),OCTET_LENGTH(str),CHAR_LENGTH(str),CHARACTER_LENGTH(str)

mysql> SELECT id,LENGTH(job) as one,OCTET_LENGTH(job) as two,CHAR_LENGTH(job) as
 three,CHARACTER_LENGTH(job) as four FROM string_test WHERE id = 4;
+----+-----+-----+-------+------+
| id | one | two | three | four |
+----+-----+-----+-------+------+
|  4 |  14 |  14 |    14 |   14 |
+----+-----+-----+-------+------+
1 row in set (0.00 sec)

22,合并多个字符串,或者表中的多个字段

CONCAT(str1,str2,…)

返回来自于参数连结的字符串。如果任何参数是NULL,返回NULL。可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。

mysql> SELECT id,CONCAT(name,job,hobby) FROM string_test WHERE id = 4;
+----+-----------------------------------+
| id | CONCAT(name,job,hobby)            |
+----+-----------------------------------+
|  4 | tankzhanglove your lovei love you |
+----+-----------------------------------+
1 row in set (0.00 sec)

23,进制转换

BIN(N)
返回二进制值N的一个字符串表示,在此N是一个长整数(BIGINT)数字,这等价于CONV(N,10,2)。如果N是NULL,返回NULL。

OCT(N)
返回八进制值N的一个字符串的表示,在此N是一个长整型数字,这等价于CONV(N,10,8)。如果N是NULL,返回NULL。

HEX(N)
返回十六进制值N一个字符串的表示,在此N是一个长整型(BIGINT)数字,这等价于CONV(N,10,16)。如果N是NULL,返回NULL。

ASCII(str)
返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。

mysql> select bin(20),oct(20),hex(20),ascii(20);
+---------+---------+---------+-----------+
| bin(20) | oct(20) | hex(20) | ascii(20) |
+---------+---------+---------+-----------+
| 10100   | 24      | 14      |        50 |
+---------+---------+---------+-----------+
1 row in set (0.02 sec)

 

转载自:http://blog.51yip.com/mysql/965.html

分享到:
评论

相关推荐

    从字符串中查找字符出现次数的方法和性能对比

    但如果条件是基于字段中的子串或特定字符,则需结合字符串函数如`LENGTH`、`REPLACE`等来构建更复杂的查询语句,类似于文章中给出的`int mylen = (mysql.Length - mysql.Replace("sum", "").Length) / 3;`这样的...

    MySql常用内置函数

    内容概要:本文档介绍了 MySQL 数据库中的内置函数及其使用方法,包括日期时间函数、字符串函数、数学函数及其他常用函数。详细解释了每种类型的函数及其常见应用场景,提供了具体的 SQL 语句实例。 适合人群:MySQL...

    Mysql通过存储过程分割字符串为数组

    - `REVERSE(str)` 是一个MySQL字符串函数,它接收一个字符串参数`str`,并返回一个新的字符串,其字符顺序与原字符串相反。这个函数在分割字符串为数组时,用于倒序排列字符串以便于后续操作。 2. **SUBSTRING_...

    SQL语句中设置多个字符串

    本实例将深入探讨如何在SQL语句中设置多个字符串条件,这对于初学者掌握数据库操作至关重要。 首先,让我们了解SQL的基本结构。SQL主要用于与关系型数据库进行交互,其基本查询语句包括SELECT,FROM,WHERE等部分。...

    PHP常见字符串操作函数与用法总结

    本文实例讲述了PHP常见字符串操作函数与用法。分享给大家供大家参考,具体如下: 一、字符串的格式化 1、字符串的格式化 trim()函数可以去除字符串的开始位置和结束位置的空格,并将结果字符串返回,默认情况下去除...

    MySQL函数大全中文版

    2. **字符串函数**:例如`CONCAT()`用于连接两个或更多字符串,`SUBSTRING()`用于提取字符串的一部分,`REPLACE()`用于替换字符串中的特定部分,而`LOWER()`和`UPPER()`则用于转换大小写。 3. **日期和时间函数**:...

    主流字符串哈希算法简明介绍及实例代码

    MySQL 中的字符串 Hash 函数 MySQL 是一种广泛使用的关系数据库管理系统,它也提供了一些字符串哈希算法。下面是一个 MySQL 中的哈希函数的实现: #ifndef new_hash_function /* calc hashvalue for a key */ ...

    Mysql函数大全.pdf

    - 字符串函数在使用时应注意区分大小写,MySQL在某些情况下是区分大小写的。 5. 函数的运用实例: - 使用`CONCAT()`函数可以轻松地将多个字段的值拼接在一起,例如,`SELECT CONCAT(first_name, ' ', last_name) ...

    mysql常用函数实例总结【聚集函数、字符串、数值、时间日期处理等】

    本文主要探讨了MySQL中的一些常用函数,涵盖了聚集函数、字符串处理、数值运算以及时间日期处理等多个方面。 首先,聚集函数是MySQL中处理大量数据时非常重要的工具。例如,`AVG()`函数用于计算指定字段的平均值,...

    Linux C字符串替换函数实例详解

    Linux C字符串替换函数实例详解  最近学习linux 的基础编程知识,字符串替换函数,在网上找下资料,觉得这篇文章写的不错,记录下来,和大家分享一下: 实例代码: #include #include #include /** * * @author...

    PHP函数大全,PHP函数实例

    PHP内建了大量的函数,涵盖了字符串处理、数组操作、文件系统交互、网络通信、数学运算、日期时间处理等多个方面。以下是一些主要的知识点: 1. **字符串处理函数**: - `strlen()`:计算字符串长度。 - `str_...

    ADO.NET连接字符串大全

    在C#中,使用ADO.NET操作数据库时,你可以通过`SqlConnection`(SQL Server)、`OleDbConnection`(ODBC兼容数据库)或`OdbcConnection`(ODBC)类创建连接对象,并将连接字符串作为构造函数的参数传递。例如: ```...

    PHP常用函数大全使用

    本资源"PHP常用函数大全"提供了丰富的函数实例,帮助开发者深入理解和掌握PHP中的核心函数。下面,我们将对一些重要的PHP函数进行详细介绍。 1. **字符串处理函数** - `strlen()`:计算字符串长度,例如`strlen(...

    mysql字符串的‘123’转换为数字的123的实例

    例如,当你尝试将字符串与0相加(如`'123'+0`)时,MySQL会将字符串解析为数字,然后执行加法操作。这种方法简单且直观,但如果字符串不能转换为有效的数字,将引发错误。 需要注意的是,以上方法只适用于纯数字...

    PHP上百个常用功能函数.zip

    1. **字符串处理函数**:PHP提供了丰富的字符串操作函数,如`strlen()`用于获取字符串长度,`str_replace()`用于替换字符串中的指定字符或子串,`strpos()`用于查找子串在字符串中的位置,`trim()`用于去除字符串...

    mysql的日期和时间函数.rar

    日期和时间函数是MySQL中的重要组成部分,它们允许我们进行日期和时间的计算、格式化以及各种操作,极大地增强了数据库查询和数据分析的能力。在这个“mysql的日期和时间函数”教程中,我们将深入探讨这些关键功能。...

    让我胃疼的MySQL字符集问题

    MySQL字符集问题一直以来都是数据库管理中的一个痛点,尤其是在处理多语言数据或者进行数据迁移时,不恰当的字符集设置可能导致乱码、无法存储特殊字符甚至数据丢失。这篇文档将深入探讨MySQL字符集的工作原理,常见...

    mysql字符串拼接并设置null值的实例方法

    总结来说,MySQL提供了多种方式来处理字符串拼接,包括基本的`CONCAT()`函数、处理NULL值的`IFNULL()`函数,以及带有分隔符的`CONCAT_WS()`函数。这些工具使得在数据库中组合和格式化文本变得更加灵活。在实际开发中...

    sql_函数大全_比较常用的一些函数整理.pdf

    1. 字符串函数 - CHARINDEX():用于返回子字符串在字符串中首次出现的位置。 - PATINDEX():返回字符串中某个模式的起始位置,可以使用通配符。 - LEN():返回字符串的长度。 - LEFT() 和 RIGHT():分别返回字符...

Global site tag (gtag.js) - Google Analytics