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

Posted

技术标签:

【中文标题】从另一列的子字符串更新一列【英文标题】:Update one column from substring of another column 【发布时间】:2013-06-14 17:26:08 【问题描述】:

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

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

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

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

UPDATE [MyTable] SET [ShortName] = ???

【问题讨论】:

【参考方案1】:

试试这个:

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

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

【讨论】:

对您的代码进行少量编辑,它运行良好!谢谢!只是等待计时器过去,所以我可以将您的响应设置为答案 UPDATE [MyTable] SET [ShortName] = RTRIM(SUBSTRING([Name],1,CHARINDEX(' ',[Name],charindex(' ',[姓名])+1))) 如果 FullName 的空格少于两个,则返回一个空字符串。【参考方案2】:

只需组合字符串操作函数,直到得到你想要的:

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 语句的第一部分用于包含少于两个空格的名称。

【讨论】:

以上是关于从另一列的子字符串更新一列的主要内容,如果未能解决你的问题,请参考以下文章

pandas - 如果列标题是另一列的子字符串,则创建真/假列

编写一个 sql 查询以使用另一列的子字符串将列添加到数据框

pyspark:删除作为另一列值的子字符串,并从给定列的值中包含正则表达式字符

根据不同数据类型的另一列设置一列的默认值

SQL 从另一个表中的另一列更新一列

使用同一表中另一列的数据计数更新一列? [关闭]