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 ...
随机推荐
- CAS 之 Apereo CAS 简介(一)
CAS 之 Apereo CAS 简介(一) Background(背景) 随着公司业务的不断扩展,后台接入子系统不断增多,那么我们将针对不同的平台进行拆分为各自对应的子系统, 权限是不变的,那么我们 ...
- jmeter常见问题汇总
Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为"聚合报告".今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下, ...
- Ubuntu16.0.4下搭建pycharm 2018.3.22
一.首先安装Java jdk Java JDK有两个版本,一个开源版本Openjdk,还有一个Oracle官方版本jdk.下面记录在Ubuntu 16.04上安装Java JDK的步骤. 安装open ...
- 初始CSS3
初始CSS31.1.什么是CSSCSS全程为层叠样式表(Cascading Style Sheet),通常又称为风格样式表(Style Sheet)它是用来进行网页风格设计的.1.CSS在网页中的应用 ...
- 密码脱落 JAVA 蓝桥杯
密码脱落 X星球的考古学家发现了一批古代留下来的密码.这些密码是由A.B.C.D 四种植物的种子串成的序列.仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串).由于年代久远,其中许多 ...
- 下一个ajax异步请求被挂起问题
异步请求按理来说应该是会不受其它ajax请求影响的,但如果是服务端访问了Session就不能这么说了. 了解了asp.net的会话管理,那我们来看看今天要谈到的主题: IReadOnlySession ...
- centos 安装atom 笔记
一.安装atom "To install Atom on Linux, you can download a Debian package or RPM package either fr ...
- python全栈学习--day2
一.in的使用 说明:in有相当多的用处,比如判断,循环for 等. 实例一:in 操作符用于判断关键字是否存在于变量中 s = '男人john' print('男孩' in s) print('男孩 ...
- java虚拟机的内存分配与回收机制
分为4个方面来介绍内存分配与回收,分别是内存是如何分配的.哪些内存需要回收.在什么情况下执行回收.如何监控和优化GC机制. java GC(Garbage Collction)垃圾回收机制,是java ...
- hdu 5274 Dylans loves tree
Dylans loves tree http://acm.hdu.edu.cn/showproblem.php?pid=5274 Time Limit: 2000/1000 MS (Java/Othe ...