我必须根据现有列更新一列。要更新的列是业务。现有列是部门。并非所有部门都有冒号(:)
这就是我需要得到的:
表1
业务部门
Xerox Xerox
Google Google: Development
Zas Zas: Selling
Worten Worten
我使用过T-SQL:
UPDATE Table 1
set business=left(Department,patindex('%:%',Department))
我得到的是什么
业务部门
Xerox
Google: Google: Development
Zas: Zas: Selling
Worten
我试图在patindex之后放置-1,但这是禁止的。这将摆脱结肠。因此,我需要另一种方法来摆脱冒号并在业务专栏中使worten和xerox出现。
答案 0 :(得分:1)
UPDATE [Table 1]
set business=
case when patindex('%:%',Department)>0 then left(Department,patindex('%:%',Department)-1)
else Department
end;
除非这是清理数据的步骤,否则您也可以只创建具有相同表达式的计算列。
答案 1 :(得分:1)
我会这样写:
update Table 1
set business = left(Department, charindex(':', Department + ':') - 1);
首先,相对于charindex()
,我更喜欢patindex()
。毫无疑问,这是因为我多次不使用通配符。
第二,您只需在部门末尾添加一个冒号即可消除条件逻辑。这简化了逻辑。