sql 正则表达式 替换字母+数字

商品编号:USABS5737206465-N1USABS5737206465-N2USABS5737206465-N3USABS5737206465-N4..USABS5... 商品编号:
USABS5737206465-N1
USABS5737206465-N2
USABS5737206465-N3
USABS5737206465-N4
.
.
USABS5737206465-N31
怎么替换掉 (-N+数字)?

update [dbo].[Winit库存] set [商品编号] =
展开
 我来答
紫薇参星
科技发烧友

2018-07-21 · 有一些普通的科技小锦囊
知道大有可为答主
回答量:5983
采纳率:92%
帮助的人:3608万
展开全部

我不知道你用的是什么数据库,下面我给你一个Oracle数据库的替换掉 (-N+数字)的例子

update [dbo].[Winit库存] set [商品编号] = REGEXP_REPLACE([商品编号],'\-N\d+','')

不同的数据库,用的可以用正则表达式的replace函数不一样

SQL Server中我不知道你那里有没有dbo.RegexReplace函数,是不是还要现建这个替换函数

update [dbo].[Winit库存] set [商品编号] = dbo.RegexReplace([商品编号],'\-N\d+','',1)

下面是建立RegexReplace函数的sql语句

--如果存在则删除原有函数  

IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL   

    DROP FUNCTION dbo.RegexReplace  

GO  

--开始创建正则替换函数  

 CREATE FUNCTION dbo.RegexReplace  

(  

    @string VARCHAR(MAX),   --被替换的字符串  

    @pattern VARCHAR(255),  --替换模板  

    @replacestr VARCHAR(255),   --替换后的字符串  

    @IgnoreCase INT = 0 --0区分大小写 1不区分大小写  

)  

RETURNS VARCHAR(8000)  

AS   

BEGIN  

    DECLARE @objRegex INT, @retstr VARCHAR(8000)  

    --创建对象  

    EXEC sp_OACreate 'VBScript.RegExp', @objRegex OUT  

    --设置属性  

    EXEC sp_OASetProperty @objRegex, 'Pattern', @pattern  

    EXEC sp_OASetProperty @objRegex, 'IgnoreCase', @IgnoreCase  

    EXEC sp_OASetProperty @objRegex, 'Global', 1  

    --执行  

    EXEC sp_OAMethod @objRegex, 'Replace', @retstr OUT, @string, @replacestr  

    --释放  

    EXECUTE sp_OADestroy @objRegex  

    RETURN @retstr  

END  

GO  

--保证正常运行的话,需要将Ole Automation Procedures选项置为1    

EXEC sp_configure 'show advanced options', 1    

RECONFIGURE WITH OVERRIDE   

EXEC sp_configure 'Ole Automation Procedures', 1    

RECONFIGURE WITH OVERRIDE
重庆人爱小面
2018-07-21
知道答主
回答量:33
采纳率:16%
帮助的人:3.5万
展开全部
替换成什么?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式