SQL字符串操作[获取'('')的所有文本

时间:2012-10-15 16:21:35

标签: sql sql-server tsql

我有一些看起来像这样的数据:

SourceOfBooking
----------------
Company1 (Foo)
Company2 (Bar)
Company3 (Foo1)
Company4 (Foo2)

我希望转换它,所以我的数据只显示:

SourceOfBooking
----------------
Company1
Company2
Company3
Company4

我试过了:

LEFT(SourceOfBooking, CHARINDEX(';', SourceOfBooking) )

没有运气。

我确定我错过了一些非常简单的事情......任何人都在关心启发?

KR,詹姆斯。

4 个答案:

答案 0 :(得分:18)

我认为你只是把一个错误的角色

case
    when CHARINDEX('(', SourceOfBooking) > 0 then
        rtrim(left(SourceOfBooking, CHARINDEX('(', SourceOfBooking) - 1))
    else
        SourceOfBooking
end

答案 1 :(得分:3)

你可以;

LEFT(SourceOfBooking, CHARINDEX(' (', SourceOfBooking + ' (') - 1)

(如果需要,请移除+ ' (';它允许没有 (

的行

答案 2 :(得分:1)

这将返回公司名称,无论是否有括号,并且还将处理括号前没有空格的情况:

select case 
    when CHARINDEX('(', SourceOfBooking) > 0
    then RTRIM(LEFT(SourceOfBooking, CHARINDEX('(', SourceOfBooking) - 1))
    else SourceOfBooking
end
from Table1

SQL Fiddle Example

答案 3 :(得分:0)

你可以尝试一下。

创建一个新表并按以下脚本插入数据。然后执行select查询。您将获得所需的输出。

create table teststring
(name varchar(20))

insert  into teststring values ('ashish (123)')
insert  into teststring values ('ashish jain (123)')


select substring(name,1,charindex('(',name)-1)abc ,name from teststring