在我的表格中,我有2列需要修复。第一列是“城市”,它既包含城市又包含州,而仅包含城市。第二列是“状态”,包含空值和状态。重要的是要注意,当Ciy列同时包含City和State时,“ State”列为Null。
1)纽约,纽约| NULL
2)纽约| NY
到目前为止,我已经编写了分隔“城市”列的代码;但是,当“城市”列中不包含州时,它将变为“”,然后在状态列中填充“城市”值。下面的第二两列是“ City_Split”和“ State2”。
1)纽约,纽约| NULL |纽约| NY
2)纽约|纽约| ''|纽约
到目前为止,我已经尝试过使用案例陈述,但是我只是感到困惑。
我想要:
1)纽约,纽约| NULL |纽约| NY
2)纽约|纽约|纽约| NY
SELECT
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')
如果我对问题的回答不够清楚,我深表歉意,我是编码新手。
with data as (<your query>)
update data set city = city_split, state = state2
我会添加另一个条件,将更新限制为需要更新的行。
where charindex(',', city) > 1
这是按原样使用select
的简单方法。但这确实可以(而且应该吗?)而无需CTE:
update T
set city = substring(city, 1, charindex(',', city), state = ...