美文网首页
mysql查询replace用法详解

mysql查询replace用法详解

作者: 催化剂 | 来源:发表于2022-11-22 11:04 被阅读0次

一、基本

语法

REPLACE ( string_expression , string_pattern , string_replacement )

参数

string_expression 要搜索的字符串表达式。string_expression 可以是字符或二进制数据类型。

string_pattern 是要查找的子字符串。string_pattern 可以是字符或二进制数据类型。string_pattern 不能是空字符串 ('')。

string_replacement 替换字符串。string_replacement 可以是字符或二进制数据类型。

返回类型

如果其中的一个输入参数数据类型为 nvarchar,则返回 nvarchar;否则 REPLACE 返回 varchar。

如果任何一个参数为 NULL,则返回 NULL。

上面都是官话,不好懂!翻成白话:

REPLACE(String,from_str,to_str) 即:将String中所有出现的from_str替换为to_str。

二、场景

1、准备实验环境

1.1 创建表:

CREATE TABLE `test_tb` (

`id` int(10) unsigned NOT NULL auto_increment COMMENT '主键自增',

`name` char(30) default NULL COMMENT '姓名',

`address` char(60) default NULL COMMENT '地址',

`country` char(200) default NULL COMMENT '国家',

PRIMARY KEY  (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='测试表'

1.2 插入数据:

insert into test_tb(name,address,country) values

('zhangsan','北京 朝阳区','中国'),

('lisi','上海 浦东区','中国'),

('wangwu','郑州金水区','中国'),

('zhaoliu','香港九龙','中国香港'),

('Q7','加州牛肉','美国'),

('wangba','新九州岛','日本')

2、场景一:查询替换

2.1 将address字段里的 “区” 替换为 “呕” 显示(不是全部替换,全部替换可以直接使用语句 select id, name, '无人区' as address from test_db),如下

select *,replace(address,'区','呕') AS rep from test_tb

2.2 将address字段里的 “九” 替换为 “十” 显示,如下

select *,replace(address,'九','十') AS rep from test_tb where id in (4,6)

总结:

联想到前面有讲过 使用IF(expr1,expr2,expr3) 及 CASE...WHEN...THEN...END 可以实现查询结果的别名显示,但区别是:这两者是将查询结果值做整体的别名显示,而replace则可以对查询结果的局部字符串做替换显示(输出)。

3、场景二:更新替换

3.1 将address字段里的 “东” 替换为 “西” ,如下

update test_tb set address=replace(address,'东','西') where id=2

总结:对字段中局部字符串做更新替换。

4、场景三:插入替换

4.1 将id=6的name字段值改为wokou

replace into test_tb VALUES(6,'wokou','新九州岛','日本')

总结:

向表中“替换插入”一条数据,

如果原表中没有id=6这条数据,就作为新数据插入(相当于insert into作用);

如果原表中有id=6这条数据,就做替换(相当于update作用)。

对于没有指定的字段以默认值插入

相关文章

网友评论

      本文标题:mysql查询replace用法详解

      本文链接:https://www.haomeiwen.com/subject/demoxdtx.html