我有一列字符串,每个字符串中包含城市、州和数字。
SPOKANE, WA 232/107
LAS VEGAS, NV 232/117
PORTLAND, OR 232/128
除此之外,还有很多,但我想知道如何在这一列中截取城市和州并仅显示城市和州,或者更好的方法是剪切数字并将城市和州变成一个单独的列。
该列在所有不同记录的情况下都采用相同的格式。
谢谢!
我有一列字符串,每个字符串中包含城市、州和数字。
SPOKANE, WA 232/107
LAS VEGAS, NV 232/117
PORTLAND, OR 232/128
除此之外,还有很多,但我想知道如何在这一列中截取城市和州并仅显示城市和州,或者更好的方法是剪切数字并将城市和州变成一个单独的列。
该列在所有不同记录的情况下都采用相同的格式。
谢谢!
不为您完成所有的工作...
城市:从位置0到第一个逗号的前一位置的列子字符串。
州:从第一个逗号出现后2个位置的列子字符串,到下一个空格为止...修整过的。
参见:SUBSTRING()
、CHARINDEX()
、PATINDEX()
@str = SUBSTRING(@str, LEN(@str)-7, 7)
要将城市和州分开,您需要某种拆分函数,但我无法立即记住语法,对不起。
我已经解决了问题并编写了SQL语句...然后我看到了Fosco的答案,但既然我已经有了我的版本,那么我也可以将其发布:
SELECT
LEFT(yourcolumn, CHARINDEX(',', yourcolumn) - 1) AS City,
RIGHT(LEFT(yourcolumn, CHARINDEX(',', yourcolumn) + 3), 2) AS State
FROM yourtable
我认为这将按照到目前为止提出的所有方式来分解您的字段...
SELECT
substring([field], 1, patindex('%[1-9]%', [field])-1) as [CITY_AND_STATE],
substring([field], 1, charindex(',', [field])-1) as [CITY_ONLY],
substring([field], charindex(',', [field]), patindex('%[1-9]%', [field])-1)) as [STATE_ONLY],
substring([field], patindex('%[1-9]%', [field]), len([field])) as [NUMBERS_ONLY]
FROM
[table]
编辑 哎呀,刚看到问题是怎么做而不是是否应该做。我猜这就是我的结果。
其他答案都在看substring(),所以我会忽略你问题的那一部分。
关于将它们拆分到不同的列中:如果xxx/yyy与城市和州没有直接相关性,那么我肯定会将它们移到不同的列中。实际上,我会至少有三列:城市、州、[你称之为的代码]
继续编辑
如果它们总是在你的列的右侧,那么用 Right(7, [列名])
怎么样?