商品編號(hào):USABS5737206465-N1USABS5737206465-N2USABS5737206465-N3USABS5737206465-N4..USABS5737206465-N31怎么替換掉 (-N+數(shù)字)?update [dbo].[Winit庫(kù)存] set [商品編號(hào)] =
1 回答

月關(guān)寶盒
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊
我不知道你用的是什么數(shù)據(jù)庫(kù),下面我給你一個(gè)Oracle數(shù)據(jù)庫(kù)的替換掉 (-N+數(shù)字)的例子
update [dbo].[Winit庫(kù)存] set [商品編號(hào)] = REGEXP_REPLACE([商品編號(hào)], '\-N\d+' , '' ) |
不同的數(shù)據(jù)庫(kù),用的可以用正則表達(dá)式的replace函數(shù)不一樣
SQL Server中我不知道你那里有沒(méi)有dbo.RegexReplace函數(shù),是不是還要現(xiàn)建這個(gè)替換函數(shù)
update [dbo].[Winit庫(kù)存] set [商品編號(hào)] = dbo.RegexReplace([商品編號(hào)], '\-N\d+' , '' ,1) 下面是建立RegexReplace函數(shù)的sql語(yǔ)句 --如果存在則刪除原有函數(shù) IF OBJECT_ID(N 'dbo.RegexReplace' ) IS NOT NULL DROP FUNCTION dbo.RegexReplace GO --開(kāi)始創(chuàng)建正則替換函數(shù) CREATE FUNCTION dbo.RegexReplace ( @string VARCHAR ( MAX ), --被替換的字符串 @pattern VARCHAR (255), --替換模板 @replacestr VARCHAR (255), --替換后的字符串 @IgnoreCase INT = 0 --0區(qū)分大小寫(xiě) 1不區(qū)分大小寫(xiě) ) RETURNS VARCHAR (8000) AS BEGIN DECLARE @objRegex INT , @retstr VARCHAR (8000) --創(chuàng)建對(duì)象 EXEC sp_OACreate 'VBScript.RegExp' , @objRegex OUT --設(shè)置屬性 EXEC sp_OASetProperty @objRegex, 'Pattern' , @pattern EXEC sp_OASetProperty @objRegex, 'IgnoreCase' , @IgnoreCase EXEC sp_OASetProperty @objRegex, 'Global' , 1 --執(zhí)行 EXEC sp_OAMethod @objRegex, 'Replace' , @retstr OUT , @string, @replacestr --釋放 EXECUTE sp_OADestroy @objRegex RETURN @retstr END GO --保證正常運(yùn)行的話,需要將Ole Automation Procedures選項(xiàng)置為1 EXEC sp_configure 'show advanced options' , 1 RECONFIGURE WITH OVERRIDE EXEC sp_configure 'Ole Automation Procedures' , 1 RECONFIGURE WITH OVERRIDE |
- 1 回答
- 0 關(guān)注
- 181 瀏覽
添加回答
舉報(bào)
0/150
提交
取消