2014-03-03 125 views
1

我已經表命名爲「路」與名爲「路徑文件名」一列,它包含了類似下面這樣:SQL查詢操作字符串

1. U:01.03.141878Box1819P3FarihaTanzir(Moniruzzaman)0103141(756).jpg 
2. U:01.03.141876Box1807P3Arif(Mahfuz)151213Picture 96609.jpg 
3. U:01.03.141130Box1781P3RakhiSwpna(Farah)0103141 (1486).jpg 
4. U:01.03.141952Box1810P1Sufia(Jakia)010314Picture 25304.jpg 

我想要得到的第一個括號中的名字()like:1.Moniruzzaman 2.Mahfuz 3.Farah 4.Jakia

我已經使用了patindex(),charindex()和子字符串函數的左右組合,但無法獲得所需的結果。

+0

CHARINDEX(REVERSE(串))應該能協助最右邊)和(,之後,一個簡單的子字符串會得到您的結果需要注意的是()。是「括號」 - 大括號{} –

+0

請編輯您的問題幷包括您嘗試的查詢 –

+0

它是否始終是包含您所需項目的第一組括號? –

回答

1

下面是一個使用stuff()兩次的方法:

select stuff(stuff(col, charindex(')', col), len(col), ''), 
        1, charindex('(', col), '') 

可以通過添加測試:

from (select 'asbc(axx)asfdsf(123)d' as col) t 

這假定第一封閉括號())第一開口括號後出現(()。

+0

非常感謝幫助 – user3373484

1

試試這個: -

Declare @var varchar(100) 
Set @var ='U:01.03.141878Box1819P3FarihaTanzir(Moniruzzaman)0103141(756).jpg' 

Select substring(@var, 
       charindex('(',@var)+1, 
            charindex(')',@var)-charindex('(',@var)-1) 

SQL FIDDLE DEMO

+0

非常感謝您的幫助 – user3373484