在我的表中,我有两列需要修复。第一列是" City“,它既包含City和State,也包含City。第二列是"State“,其中混合了Nulls和State。需要注意的是,当Ciy列同时包含City和State时,"State“列为Null。
NEW YORK,NY | NULL
NEW YORK | NY到目前为止,我已经编写了分隔" City“列的代码;但是,当City列不包含state时,它将变为‘’,然后state列将用"City”值填充。下面的第二列是"City_Split“和"State2”。
NEW YORK,NY | NULL | NEW YORK | NY
NEW YORK | NY | '' | NEW YORK到目前为止,我已经尝试过case语句,但我只是感到困惑。
我想要:
NEW YORK,NY | NULL | NEW YORK | NY
NEW YORK | NY | NEW YORK | NYSELECT
CITY, CPS,
SUBSTRING(CITY, 0, CHARINDEX(',', CITY, - 1)) AS CITY_SPLIT,
SUBSTRING(CITY, CHARINDEX(',', CITY) + 1, LEN(CITY)) AS STATE2
FROM srcFlatFile.dbo.SWIFT AS SWIFT
WHERE (ISO_COUNTRY_CODE = 'US')如果我的问题问得不够清楚,我道歉,因为我是编程新手。
发布于 2019-10-01 00:51:22
with data as (<your query>)
update data set city = city_split, state = state2
where charindex(',', city) > 0您需要有额外的条件,将更新限制为需要更新的行。因为这些表达式要求存在逗号。
这种方法是按原样使用select的一种简单方法。但它真的可以(也应该吗?)在没有CTE的情况下这样做:
update srcFlatFile.dbo.SWIFT
set city = substring(city, 1, charindex(',', city) - 1),
state = substring(city, charindex(',', city) + 1, 2)
where charindex(',', city) > 0https://stackoverflow.com/questions/58171943
复制相似问题