一、根据条件去掉指定记录的前2个字符
update 表名 set 字段名=REPLACE(字段名,字段名,SUBSTR(字段名,1,2)) where 条件;
简单例子:
update test set name=REPLACE(name,name,SUBSTR(name,1,2)) where number=1
SUBSTR函数的简单用法
substr(字符串,截取开始位置,截取长度)//返回截取字
substr('testWork',0,1)//返回结果为't' (从字符串第一个字符开始截取长度为1的字符串)
substr('testWork',1,1)//返回结果为't' (0和1都表示截取的开始位置为第一个字符)
substr('testWork',2,4)//返回结果为'est'
substr('testWork',-3,3)//返回结果为'ork'(负数(-i)表示截取的开始位置为字符串右端向左数第i个字符)
二、批量修改指定字段的数据
update 表名 set 字段=replace(字段,'原内容','新内容') where 条件
如:将表中的图片字段中的.html去掉
update test set image=replace(image,'.html','') where number=2;
三、批量修改指定字段数据
update 表名 set 字段名=REGEXP_REPLACE(字段名,'正则表达式','替换的字符') where 条件 ;
如:将name中以'thai'开头的改为'korean'
update test set name=REGEXP_REPLACE(name,'(^thai)','korean') ;
regexp_replace(1,2,3,4,5,6) 正则替换
语法说明:1:待匹配的字符串 2:正则表达式
3:替换的字符 4:起始位置(默认从1开始) 5:替换的次数(0表示无限次) 6:取值范围(i:大小写不敏感 c:大小写敏感(默认) n:不匹配换行符号 m:多行模式 x:扩展模式,忽略正则表达式中的空白符)
扩展知识:
批量修改数据
update 表名 set 字段名=stuff(字段名,1,3,'新内容');
如:将表test中name字段的前3个字符改成'test'
update test set name=stuff(name,1,3,'test');
sqlserver stuff用法
1、作用
删除指定长度的字符,并在指定的起点插入另一组字符
2、语法
STUFF ( character_expression , start , length ,character_expression )
3、示例
在第一个字符串stringtest中删除从第3个位置(字符r)开始的三个字符,然后在删除的起始位置插入第二个字符串,返回一个新的字符串
select stuff('stringtest',3,3,'ok')
结果 stroktest
4、参数
character_expression
一个字符数据表达式。character_expression可以是常量、变量,也可以是字符列或二进制数据列
start
一个整数,指定要删除和插入的开始位置。如果start或length为负,则返回空字符串。如果start比第一个character_expression长,则返回空字符串。start可以是bigint类型。
length
一个整数,指定要删除的字符串数。如果length比第一个character_expression长,则最多删除到最后一个character_expression中的最后一个字符。length可以是bigint类型。
5、返回类型
如果character_expression是受支持的字符数据类型,则返回字符数据。如果character_expression是一个不受支持的binary数据类型,则返回二进制数据。
6、备注
如果结果值大于返回类型支持的最大数,则产生错误