2014-03-03 127 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