从另一列的子字符串更新一列

时间:2013-06-14 17:26:08

标签: sql sql-server tsql

我有一个现有的列,我希望将其作为子集并插入到同一个表中的第二个(新)列中。

e.g。 MyTable。[FullName](现有专栏)包含一个字符串,如“P-13-146 PS - Goodyear - Tire repair”

我创建了一个新列MyTable。[ShortName],我希望将第一列中值的子字符串插入(“P-13-146 PS”)。问题是每个全名的子字符串长度不同。唯一真正的一致性是我想要第二个空格字符。

我正在尝试解决以下问题:

更新[MyTable] SET [ShortName] = ???

2 个答案:

答案 0 :(得分:2)

试试这个:

declare @exp varchar(200)
set @exp='P-13-146 PS - Goodyear - Tire repair'

select RTRIM(SUBSTRING(@exp,1,CHARINDEX(' ',@exp,charindex(' ',@exp)+1)))

答案 1 :(得分:0)

只需组合字符串操作函数,直到获得所需内容:

SELECT 
CASE WHEN CHARINDEX(' ',FullName, CHARINDEX(' ', FullName)+1) = 0 THEN FullName
ELSE SUBSTRING(FullName, 1, CHARINDEX(' ',FullName, CHARINDEX(' ', FullName)+1)-1)
END ShortName
FROM MyTable

CASE语句的第一部分是针对少于两个空格的名称。