mysql中replace函数直接替换mysql数据库中某字段中的特定字符串,用起来非常的方便。
REPLACE(str,from_str,to_str) 第一个字符串str中,将from_str替换为to_str
回到上一篇文章的问题:假设有两个借款,其中一个借款1的到期还款日为2日,借款2的到期还款日为10日。
这个字段loan_pmt_due_date日期有多个。这篇文章介绍另外一个函数REPLACE处理此问题。
先来看一个简单的例子:
select REPLACE('hello word','word','world'); # 结果:hello world
select REPLACE(loan_pmt_due_date,SUBSTR(loan_pmt_due_date,9,2),'02') from ms_repayment_plan where loan_id = 1 and SUBSTR(loan_pmt_due_date,9,2)!='02';select REPLACE(loan_pmt_due_date,SUBSTR(loan_pmt_due_date,9,2),'10') from ms_repayment_plan where loan_id = 2 and SUBSTR(loan_pmt_due_date,9,2)!='10';
通过上面的语句,我们发现是无法解决上面的问题的,因为最后两个数字在字段loan_pmt_due_date中不是唯一的
注意:REPLACE(str,from_str,to_str) 中from_str一定要确保在str中是唯一的,要不然会替换多次
replace into函数
说到接触REPLACE,我们会想到replace into函数,有这样一个业务场景:向数据库中插入数据,前提是重复的不能再次插入。以前用where解决的,今天才知道还有一个更简洁的方法replace。
replace具备替换拥有唯一索引或者主键索引重复数据的能力,也就是如果使用replace into插入的数据的唯一索引或者主键索引与之前的数据有重复的情况,将会删除原先的数据,然后再进行添加。
语法:replace into table( col1, col2, col3 ) values ( val1, val2, val3 )
语义:向table表中col1, col2, col3列replace数据val1,val2,val3
原先普通的insert语句会报错:
replace into china_stock values('2','000839','中信国安');