一列在“城市”和“州”之间以及“仅城市”之间混合使用。我已经将City和State分开了,但是如何保持正确的City字段呢?

问题描述 投票:1回答:1

在我的表格中,我有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')

如果我对问题的回答不够清楚,我深表歉意,我是编码新手。

sql ssms
1个回答
0
投票
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 = ...
© www.soinside.com 2019 - 2024. All rights reserved.