我有一个现有的列,我希望将其作为子集并插入到同一个表中的第二个(新)列中。
e.g。 MyTable。[FullName](现有专栏)包含一个字符串,如“P-13-146 PS - Goodyear - Tire repair”
我创建了一个新列MyTable。[ShortName],我希望将第一列中值的子字符串插入(“P-13-146 PS”)。问题是每个全名的子字符串长度不同。唯一真正的一致性是我想要第二个空格字符。
我正在尝试解决以下问题:
更新[MyTable] SET [ShortName] = ???
答案 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语句的第一部分是针对少于两个空格的名称。