在SQL中剥离变量的特定部分

在SQL中剥离变量的特定部分,sql,string,oracle,Sql,String,Oracle,我有一个变量,动态存储URL 例如,a=”https://myaccessdev.searshc.com/aveksa/main?Oid=1&ReqType=GetPage&ObjectClass=com.aveksa.gui.objects.workflow.GuiWorkflowJob&WFObjectID=3478:WPDS" 我想从整个字符串中去掉“:WDPS”之前最后一个数字 在SQL中有什么方法可以做到这一点吗 DECLARE @string varchar(255) = 'http

我有一个变量,动态存储URL

例如,a=”https://myaccessdev.searshc.com/aveksa/main?Oid=1&ReqType=GetPage&ObjectClass=com.aveksa.gui.objects.workflow.GuiWorkflowJob&WFObjectID=3478:WPDS"

我想从整个字符串中去掉“:WDPS”之前最后一个数字

在SQL中有什么方法可以做到这一点吗

DECLARE @string varchar(255) = 'https://myaccessdev.searshc.com/aveksa/main?Oid=1&ReqType=GetPage&ObjectClass=com.aveksa.gui.objects.workflow.GuiWorkflowJob&WFObjectID=3478:WPDS'

DECLARE @end varchar(10) = REVERSE(SUBSTRING(REVERSE(@string),0,CHARINDEX('=', REVERSE(@string))))

SELECT SUBSTRING(@end,0,CHARINDEX(':', @end))
我想从整个字符串中去掉“:WDPS”之前的数字[…]

这是一个完美的匹配:

制作:

3478

请参阅以获取实时演示。

如果您只需要号码,可以执行以下操作:

select regexp_substr(regexp_substr(s, '=[0-9]*:WPDS', 1, 1), '[0-9]*', 1, 1)
您可以使用
regexp\u substr()
执行此操作。我现在测试它有困难。以下几点非常接近:

select regexp_substr(s, '=[0-9]*:WPDS', 1, 1)

是的,有很多方法可以做到这一点。我认为您想要介于
WFObjectID=
:WPDS
之间的数字(即3478,但可以是任意长度)是正确的?
select regexp_substr(s, '=[0-9]*:WPDS', 1, 1)