如何在sql server中对字符串进行子串?

时间:2014-12-29 13:30:07

标签: sql sql-server

我在SQL中有一个字符串,如

  

INF / 000079160100 / P - ( 34 )案件净银行

我想以粗体显示一个字符串。
如何使用substring函数读取该字符串。

select 'INF/000079160153/P- (539) cases NET BANKING',Substring('INF/000079160153/P- (539) cases NET BANKING', CHARINDEX('(', 'INF/000079160153/P- (539) cases NET BANKING',(SELECT CHARINDEX('/', 'INF/000079160153/P- (539) cases NET BANKING')+1))+1,6)

这给了我539)c但我想只读到结束括号。

提前感谢。

2 个答案:

答案 0 :(得分:1)

select 'INF/000079160153/P- (539) cases NET BANKING',
Substring('INF/000079160153/P- (539) cases NET BANKING', 
  CHARINDEX('(', 'INF/000079160153/P- (539) cases NET BANKING',(SELECT CHARINDEX('/', 'INF/000079160153/P- (539) cases NET BANKING')+1))+1,
  CHARINDEX(')', 'INF/000079160153/P- (539) cases NET BANKING')-CHARINDEX('(', 'INF/000079160153/P- (539) cases NET BANKING')-1)

答案 1 :(得分:1)

你有SUBSTRING函数的硬编码长度 - (...,6)...)
在查询中,您需要将长度计算为'('字符和')'字符

的索引之间的差异
DECLARE @Test AS NVARCHAR(200) = 'INF/000079160153/P- (539) cases NET BANKING'
SELECT @Test
, SUBSTRING(@Test
        , CHARINDEX('(', @Test,CHARINDEX('/', @Test)) + 1
        , CHARINDEX(')', @Test,CHARINDEX('/', @Test)) - (CHARINDEX('(', @Test,CHARINDEX('/', @Test)) + 1))