首页 > 解决方案 > 我的 SQL Server 数据库中有两个字符串,我想在查询中从它们中获取特定值

问题描述

第一个字符串是

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 小时内我无法做到

标签: sqlsql-serversql-server-2008

解决方案


有许多不同的方法可以实现这一目标。实现此目的的一种方法是使用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', '');

推荐阅读