mysql中使用replace替换某字段的部分内容,mysqlreplace
最近有个朋友提到如何使用sql来删除一个字段中部分内容,于是就写了这篇文章,简单记过:
测试表如下:
CREATE TABLE `t` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`domain` tinytext,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
插入测试内容:
INSERT INTO t(domain) VALUES ('j054,j020,mc032,her302')

替换表内容:
UPDATE t SET domain = (REPLACE(domain, ',her302', '')) WHERE id = 1
查看替换结果

set @前缀='img.youacom/' ;
select concat(@前缀,SUBSTRING_INDEX(imgurl ,'/',-1)) imgurl from ly_img ;
设 ①字段名为 A;②要替换当前表中所有记录的A字段中包含的所有"中国人"为"中国";则:
REPLACE A WITH STRTRAN(A,"中国人","中国") ALL
请参考VF帮助:
① REPLACE FieldName1 WITH eExpression1 [ADDITIVE] [, FieldName2 WITH eExpression2 [ADDITIVE]] ... [Scope] [FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias]
将nWorkArea|或cTableAlias指定的表中的字段FieldName1 [,FieldName2]...内容[分别]替换为表达式eExpression1 [eExpression2]...的值;[ADDITIVE] 仅用于备注字段,表示将eExpression的内容追加到备注字段尾部;[Scope]指定替换记录范围,可以是ALL或NEXT nRecords或REST或RECORD nRecordNumber,缺省值是当前记录(NEXT 1);[FOR lExpression1]、 [WHILE lExpression2]指定进行替换的条件,在[Scope]范围内只要lExpression1、lExpression2 的结果为真,REPLACE操作就将进行。
② STRTRAN(c1, c2 [, c3] [, n1] [, n2])
将c1中的c2替换为c3;替换从c1中第n1个c2开始,连续替换n2次。c1、c2、c3可以是字符表达式或备注字段;c3的缺省值是空字符串;n1的缺省值是1;n2的缺省值是从n1开始的所有c2