从另一列的子字符串更新一列
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 查询以使用另一列的子字符串将列添加到数据框