我有一个变量,我动态存储URL
对于Eg。一个= “https://myaccessdev.searshc.com/aveksa/main?Oid=1&ReqType=GetPage&ObjectClass=com.aveksa.gui.objects.workflow.GuiWorkflowJob&WFObjectID=3478:WPDS”
我想从整个字符串中删除“:WDPS”之前的最后一个数字。
在SQL中有没有办法呢
答案 0 :(得分:2)
我想在"之前删除数字[...]:WDPS"从整个字符串。
这是REGEXP_REPLACE
的完美匹配:
with test_data as
(select 'https://myaccessdev.searshc.com/aveksa/main?Oid=1&ReqType=GetPage&ObjectClass=com.aveksa.gui.objects.workflow.GuiWorkflowJob&WFObjectID=3478:WPDS' str
from dual)
select REGEXP_REPLACE(str, '.*=([0-9]*):WPDS.*', '\1') from test_data
-- ^^^^^^^^^^^^^^^^^^^^ ^^^^
-- replace everything before and after by the first capturing
-- the target string group (i.e.: the sequence between
-- parenthesis in the regular expression)
产:
3478
请参阅http://sqlfiddle.com/#!4/d41d8/37095了解即时演示。
答案 1 :(得分:0)
试试这个
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))
答案 2 :(得分:0)
如果您只想要这个号码,可以这样做:
select regexp_substr(regexp_substr(s, '=[0-9]*:WPDS', 1, 1), '[0-9]*', 1, 1)
您可以使用regexp_substr()
执行此操作。我现在正在测试它。以下内容非常接近:
select regexp_substr(s, '=[0-9]*:WPDS', 1, 1)