MySQL中的字符串函数
使用字符串数据
当使用字符串数据时,可以使用下面的字符数据类型。
- CHAR
- 固定长度、不足部分使用空格填充的字符串。
- varchar
- 变长字符串。
- text(MySQL和SQL Server)或CLOB(CHaracter Large Object;Oracle Database)
- 容纳大长度的边长字符串(通常在上下文中指代文本)。MySQL具有多种text类型(tinytext、text、mediumtext和longtext),最多可保存4GB大小的文档数据。
创建下表用于演示:
CREATE TABLE string_tbl
(
char_fld CHAR(30),
vchar_fld VARCHAR(30),
text_fld TEXT
);
生成字符串
生成字符串数据的最简单方式是使用一对单引号将字符串包含起来:
INSERT INTO string_tbl (char_fld, vchar_fld, text_fld)
VALUES ('This is char data', 'This is varchar data', 'This is text data');
通过
SELECT @@session.sql_mode;
命令可以查看MySQL命令的模式。
结果如下:
mysql> SELECT @@session.sql_mode;
+----------------------------------------------------------------+
| @@session.sql_mode |
+----------------------------------------------------------------+
| STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------+
1 row in set (0.00 sec)
在MySQL中,默认行为是“strict”模式,即在发生问题时抛出异常,而在早先的服务器版本中,默认方式是阶段字符串并发出一个警告。如果希望数据库引擎采取后一种方式,可以将之修改为ANSI模式:
SET sql_mode='ansi';
通过
SHOW WARNINGS;
来查看警告。
处理字符串中包含单引号的情况
如果要插入的字符串中包含单引号,可以:
- 通过在单引号前再添加一个单引号作为转义符
- 或选择反斜杠作为单引号的转义字符
mysql> UPDATE string_tbl
-> SET text_fld = 'This String disn''t work, but it does now';
Query OK, 1 row affected (0.14 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE string_tbl
-> SET text_fld = 'This String disn\'t work, but it does now';
Query OK, 0 rows affected (0.13 sec)
Rows matched: 1 Changed: 0 Warnings: 0
使用内建函数 quote() ,可以将整个字符串包含起来,并为字符串本身的单引号/撇号增加转义符。例:
SELECT quote(text_fld) FROM string_tbl;
结果:
mysql> SELECT quote(text_fld) FROM string_tbl;
+---------------------------------------------+
| quote(text_fld) |
+---------------------------------------------+
| 'This String disn\'t work, but it does now' |
+---------------------------------------------+
1 row in set (0.00 sec)
包含特殊字符
内建函数 char() 可用于从ASCII字符集中255个字符中任意构建字符串:
SELECT CHAR(128,129,130,131,132,133,134,135,136,137);
结果:
mysql> SELECT CHAR(128,129,130,131,132,133,134,135,136,137);
+-----------------------------------------------+
| CHAR(128,129,130,131,132,133,134,135,136,137) |
+-----------------------------------------------+
| 亗儎厗噲 |
+-----------------------------------------------+
1 row in set (0.00 sec)
concat() 函数用于连接字符串:
mysql> SELECT CONCAT('zifeiy haha ', CHAR(148), 'n');
+----------------------------------------+
| CONCAT('zifeiy haha ', CHAR(148), 'n') |
+----------------------------------------+
| zifeiy haha 攏 |
+----------------------------------------+
1 row in set (0.00 sec)
ascii() 函数接受一个字符并返回其序号:
mysql> SELECT ASCII('a');
+------------+
| ASCII('a') |
+------------+
| 97 |
+------------+
1 row in set (0.05 sec)
操作字符串
- length()函数:返回字符串的字符数
SELECT LENGTH(char_fld) char_length,
LENGTH(vchar_fld) varchar_length,
LENGTH(text_fld) text_length
FROM string_tbl;
- position()函数:查找字符串中子字符串的位置
SELECT POSITION('zifeiy' IN vchar_fld)
FROM string_tbl;
- locate()函数:从指定位置开始搜索字符串中的子字符串
SELECT LOCATE('zifeiy', vchar_fld, 5)
FROM string_tbl;
- strcmp()函数:字符串比较函数
该函数接受两个字符串作为参数,并返回下面的结果之一:- -1,第一个字符串字典序小于第二个字符串字典序
- 0,两个字符串相等
- 1,第一个字符串字典序大于第二个字符串
SELECT STRCMP('12345', '12345') 12345_12345,
STRCMP('abcd', 'xyz') abcd_xyz,
STRCMP('abcd', 'QRSTUV') abcd_QRSTUV,
STRCMP('qrstuv', 'QRSTUV') qrstuv_QRSTUV,
STRCMP('12345', 'xyz') 12345_xyz,
STRCMP('xyz', 'qrstuv') xyz_qrstuv;
结果:
+-------------+----------+-------------+---------------+-----------+------------+
| 12345_12345 | abcd_xyz | abcd_QRSTUV | qrstuv_QRSTUV | 12345_xyz | xyz_qrstuv |
+-------------+----------+-------------+---------------+-----------+------------+
| 0 | -1 | -1 | 0 | -1 | 1 |
+-------------+----------+-------------+---------------+-----------+------------+
- 除了strcmp()函数,MySQL还可以在select语句中使用like和regexp操作符来比较字符串
SELECT name, name LIKE '%ns' end_in_ns
FROM department;
SELECT cust_id, cust_type_cd, fed_id,
fed_id REGEXP '.{3}-.{2}-.{4}' is_ss_no_format
FROM customer;
CONCAT()函数的用法示例:
UPDATE string_tbl
SET text_fld = CONCAT(text_fld, ', now longer');
SELECT CONCAT(fname, ' ', lname) FROM employee;
insert()函数 ,它接受4个参数:原始字符串、字符串操作的开始位置、需要替换的字符串以及替换字符串。根据第三个值,函数可以选择插入或替换原始字符串中的字符。如果该参数值为0,那么替换字符串将会被插入其中,并且剩余的字符将会向右排放。
SELECT INSERT('zifeiy hello', 9, 0, 'haha');
substring()函数 从指定位置开始提取指定数目的字符:
SELECT SUBSTRING('goodbye zifeiy world', 9, 6);
MySQL中的字符串函数的更多相关文章
- MySQL中常用字符串函数
1.字符串长度函数CHAR_LENGTH(str),LENGTH(str) CHAR_LENGTH()返回值为字符串str的长度,长度的单位为字符.一个多字节字符算作一个单字符.对于一个包含五个二字 ...
- Mysql中使用find_in_set函数查找字符串
mysql有个表的字段的存储是以逗号分隔的,如domain字段login.s01.yy.com,s01.yy.com,s02.yy.com.现在要查找s01.yy.com这个.我们用like查找好像不 ...
- mysql中的substr()函数
mysql中的substr()函数和hibernate的substr()参数都一样,就是含义有所不同. 用法: substr(string string,num start,num length); ...
- Mysql中常用的函数汇总
Mysql中常用的函数汇总: 一.数学函数abs(x) 返回x的绝对值bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制)ceiling(x) 返回大于x的最小整数值exp(x) 返回 ...
- Mysql中的常用函数:
Mysql中的常用函数: 1.字符串函数: (1).合并字符串 concat():// concat('M','y',"SQL",'5.5');== MySQL5.5//当传入的参 ...
- [转]mysql中的字符串的拼接
字符串的拼接 1,Mysql 在Java.C#等编程语言中字符串的拼接可以通过加号“+”来实现,比如:"1"+"3"."a"+"b ...
- 使用Mysql中的concat函数或正则匹配来快速批量生成用于执行的sql语句
背景介绍 今天需要给一张表里面补数据,需要按照行的维度进行update,如果是个别数据那么直接写update语句就可以了,但是场景要求的是将整表的数据进行update,要实现这个需求就不能只靠蛮力了, ...
- Oracle和Mysql中的字符串的拼接
SQL允许两个或者多个字段之间进行计算,字符串类型的字段也不例外.比如我们需要 以"工号+姓名"的方式在报表中显示一个员工的信息,那么就需要把工号和姓名两个字符 串类型的字段拼接计 ...
- Python3中的字符串函数学习总结
这篇文章主要介绍了Python3中的字符串函数学习总结,本文讲解了格式化类方法.查找 & 替换类方法.拆分 & 组合类方法等内容,需要的朋友可以参考下. Sequence Types ...
随机推荐
- java排序算法(五):快速排序
java排序算法(五):快速排序 快速排序是一个速度非常快的交换排序算法,它的基本思路很简单,从待排的数据序列中任取一个数据(如第一个数据)作为分界值,所有比它小的元素放到左边.所有比它大的元素放到右 ...
- 把文件每隔三行合并成一行(awk之RS、ORS与FS、OFS)
比如文本如下:123abc合并后的结果是:1 2 3a b c #.txt a b c awk之RS.ORS与FS.OFS 转自http://www.cnblogs.com/fhefh/archive ...
- springboot集成mybatisplus
介绍: Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生.(摘自mybatis-plus官网)Mybati ...
- 福州大学软件1715|W班-助教卞倩虹个人简介
各位好,我是卞倩虹 本科阶段的专业是网络工程,通过学校的学习我掌握了基础的网络组网配置技术,常常在机房配置路由器和交换机等相关设备.后来我接触了软件编程,在深入了解和学习后编程语言后,自主开发了一些项 ...
- C语言博客作业指针
一.PTA实验作业 题目1:统计大于等于平均分人数 本题PTA提交列表 设计思路 定义形参s存放s的首地址,n存放人数m的值,aver存放平均分aver的地址 定义i控制循环,count用来统计高于等 ...
- 201621123040《Java程序设计》第13周学习总结
1.本周学习总结 2.为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 2.1简述你想为你的系统增加什么网络功能?设计思路是什么? 创建服务器端端口(3333),当用户以客户端身份访问 ...
- exports
暴露函数 var bar = require("./bar.js"); var msg = "你好"; var info = "呵呵"; f ...
- 开始 Python 之旅
开始 Python 之旅 课程来源 本课程基于 Python for you and me 教程翻译制作,其中参考了 Python tutorial 和 The Python Standard Lib ...
- 大神都在看的RxSwift 的完全入坑手册
大神都在看的RxSwift 的完全入坑手册 2015-09-24 18:25 CallMeWhy callmewhy 字号:T | T 我主要是通过项目里的 Rx.playground 进行学习和了解 ...
- PostgreSQL 客户端乱码问题
关于客户端和服务器端的乱码问题, POSTGRESQL字符集问题总结 总结的很详细, 特别棒. 这里让我头痛了很久的问题在于 终端 上字符编码的问题, 由于我的mbp上的 iterm2 的默认编码为 ...