12

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

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

我正在寻找转换它,所以我的数据只显示:

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

我试过了:

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

没有运气。

我敢肯定我错过了一些非常简单的东西......有人愿意开导吗?

KR,詹姆斯。

4

4 回答 4

24

我认为您只是输入了错误的字符

case
    when CHARINDEX('(', SourceOfBooking) > 0 then
        rtrim(left(SourceOfBooking, CHARINDEX('(', SourceOfBooking) - 1))
    else
        SourceOfBooking
end
于 2012-10-15T16:23:21.970 回答
9

你可以;

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

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

于 2012-10-15T16:25:33.080 回答
1

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

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

SQL 小提琴示例

于 2012-10-15T16:29:22.097 回答
0

你可以试试这个。

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

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
于 2016-07-22T11:27:20.330 回答