我的SQL Server数据库中有两个字符串,我想在查询中从中获取特定值

时间:2018-10-11 19:59:10

标签: sql sql-server sql-server-2008

第一个字符串是

www.abc.c/item/itemscode/012345678974-Thisisname

我想获得/_之间的唯一部分,即只有012345678974

第二个是

abc.org.c/items/item_database/number_3_of_10-klsnfdsfjsd.txt

从这个字符串中,我只想从“ number_3_of ....”中获得3个。

我该怎么做。我尝试了许多解决方案,但在过去的48小时内无法做到

1 个答案:

答案 0 :(得分:0)

有很多不同的方法可以实现这一目标。实现此目的的一种方法是使用Left()Reverse()Charindex()函数。您需要在字符串中搜索模式,并根据此模式确定解决方案。试试这个:

--First string     
    DECLARE @string VARCHAR(255)= 'www.abc.c/item/itemscode/012345678974-Thisisname';
    SELECT LEFT(REVERSE(LEFT(REVERSE(@string), CHARINDEX('/', REVERSE(@string))-1)), CHARINDEX('-', REVERSE(LEFT(REVERSE(@string), CHARINDEX('/', REVERSE(@string))-1)))-1);

--Second String     
    DECLARE @string2 VARCHAR(255)= 'abc.org.c/items/item_database/number_3_of_10-klsnfdsfjsd.txt';
    SELECT REPLACE(REPLACE(LEFT(REVERSE(LEFT(REVERSE(@string2), CHARINDEX('/', REVERSE(@string2))-1)), CHARINDEX('-', REVERSE(LEFT(REVERSE(@string2), CHARINDEX('/', REVERSE(@string2))-1)))-1), 'NUMBER_', ''), '_OF_10', '');