SQL中的替换函数replace()使用

Posted 清语堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL中的替换函数replace()使用相关的知识,希望对你有一定的参考价值。

SQL中的替换函数replace()使用

https://www.cnblogs.com/martinzhang/p/3301224.html

语法
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 创建表:
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.1 将address字段里的 “区” 替换为 “呕” 显示,如下

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.1 将address字段里的 “东” 替换为 “西” ,如下
update test_tb set address=replace(address,\'东\',\'西\') where id=2

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

 

四、插入替换

4.1 将id=6的name字段值改为wokou
replace into test_tb VALUES(6,\'wokou\',\'新九州岛\',\'日本\')

总结:向表中“替换插入”一条数据,如果原表中没有id=6这条数据就作为新数据插入(相当于insert into作用);如果原表中有id=6这条数据就做替换(相当于update作用)。对于没有指定的字段以默认值插入。

以上是关于SQL中的替换函数replace()使用的主要内容,如果未能解决你的问题,请参考以下文章

javascript中的replace函数同时替换多个字符串

SQL中的替换函数replace()使用

str_replace 怎样才只替换一次 - 技术问答

linux 中如何用vi编辑器替换相同的字符?

Oracle替换函数

SQL语句replace怎么替换?