一、根據條件去掉指定記錄的前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、備注
如果結果值大于返回類型支持的最大數,則產生錯誤