注意:我使用的是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
有人可以帮我解决这个问题吗?
答案 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)
您可以使用substring
和charindex
的组合。
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