1

我有一个现有的列,我想提取其中的一个子集并插入到同一个表中的第二个(新)列中。

例如 MyTable.[FullName](现有列)包含类似“P-13-146 PS - Goodyear - Tire repair”的字符串

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

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

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

4

2 回答 2

2

试试这个:

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

select RTRIM(SUBSTRING(@exp,1,CHARINDEX(' ',@exp,charindex(' ',@exp)+1)))
于 2013-06-14T17:31:00.343 回答
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 语句的第一部分用于包含少于两个空格的名称。

于 2013-06-14T17:40:19.887 回答