使用不同的位置提取两个字符之间的值

时间:2015-10-07 16:49:44

标签: sql tsql

注意:我使用的是TSQL

我需要能够从字符串中间提取数据。我需要的数据长度和字符串的长度都会有所不同。

以下是完整字符串的示例:

362 Any Rd - NewPc#:420010079274892700465647513335 - StopID:12345

362 Any Rd - NewPc#:4200644392748927004720180006426006 - StopID:12345

362 Any Rd - NewPc#:00006675214112593057 - StopID:12345

362 Random Rd - NewPc#:420063709274892700465647550149 - StopID:4567

我只需要以上字符串中的以下内容:

420010079274892700465647513335

4200644392748927004720180006426006

00006675214112593057

420063709274892700465647550149

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

Select SUBSTRING( Note,CHARINDEX ('#:' , Note, 1 ) +2,
                     CHARINDEX ( ' - S' ,Note ,1 )-
       CHARINDEX ('#:' , Note, 1 ) -2 )        
    from OER

您为表格使用2个功能:  第一是找到“:”的位置

CHARINDEX ('#:' , Note, 1 ) +2 

+2是摆脱“#:”

你需要再使用这次2次,再次使用“ - S”来查看你想要去多少个角色。

 CHARINDEX ( ' - S' ,Note ,1 ) 

第二个函数是Substring,可以使用你的部分注释

链接sql小提琴: http://sqlfiddle.com/#!3/95ce8/7/0

答案 1 :(得分:0)

您可以使用substringcharindex的组合。

Fiddle

select 
substring(somecolumn, charindex(':',somecolumn) + 1,
         len(somecolumn) -
         charindex('-', reverse(somecolumn)) - 1 - charindex(':',somecolumn))
from tablename

答案 2 :(得分:0)

一个例子是:你有一个字符串和字符$

字符串

aaaaa$bbbbb$ccccc

代码

SELECT SUBSTRING('aaaaa$bbbbb$ccccc',CHARINDEX('$','aaaaa$bbbbb$ccccc')+1, CHARINDEX('$','aaaaa$bbbbb$ccccc',CHARINDEX('$','aaaaa$bbbbb$ccccc')+1) -CHARINDEX('$','aaaaa$bbbbb$ccccc')-1) as My_String

输出

bbbbb