我一直在努力在MS SQL Server中将一些名称拆分为几列,剩下的只是一个姓氏和一个中间值(John Smith of Smithsons)
这就是我想做的,我有几个例子:
of Holland
Of the Clothson,
England, from
因此,我有3种变体,可以放在字符串中的任意位置。我想做的是从“姓氏”列中删除这些值,然后将它们移到“中间”列中,这样我就可以了,
LastName|Amidst
--------------
Holland |of
clothson|of the
England |from
什么是最好的方法?是否可以将我要选择的值移到表中并从中进行引用?我不确定这是否可能。
答案 0 :(得分:1)
根据您的描述,巨大的case
表达式可能是最好的方法:
select (case when col like '% of the%'
then ltrim(rtrim(replace(col, ' of the', '')))
when col like '% of%'
then ltrim(rtrim(replace(col, ' of', '')))
when col like '% from%'
then ltrim(rtrim(replace(col, ' from', '')))
else col
end) as new_col,
(case when col like '% of the%'
then 'of the'
when col like '% of%'
then 'of'
when col like '% from%'
then 'from'
end) as new_midst