2

我正在使用 SQL Server 2008,

我有一个名为 locals 的表,其记录如下:-

447455 - 1 ABERCORN 小屋
447456 - 12 金合欢步行
447457 - 13 阿克顿山工作室
447458 - 21 阿德莱德小屋
447459 - 321 间艾伯特小屋
456155 - 722 克莱夫法院

我想要做的是删除“街道”列中的所有数字(可能使用 REPLACE),以便记录更新为:-

447455 - ABERCORN 小屋
447456 - 金合欢步行
447457 - 阿克顿山工作室
447458 - 阿德莱德小屋
447459 - 艾伯特小屋
456155 - 克莱夫球场

我努力了:-

UPDATE LOCALS 
SET Street = REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (REPLACE (str(50), '0', ''), '1', ''), '2', ''), '3', ''), '4', ''), '5', ''), '6', ''), '7', ''), '8', ''), '9', '') 
where AtoZIndex > '447454' 
  and AtoZIndex < '457309'

街道专栏是NVARCHAR(50)

但这只是让所有记录空白,关于如何解决这个问题的任何建议?

4

2 回答 2

4

这将截断为第一个字母字符:

UPDATE LOCALS SET 
    Street = SUBSTRING(Street, PATINDEX('%[A-Z]%', Street), LEN(Street))
WHERE
    AtoZIndex > '447454' and AtoZIndex < '457309'
于 2013-05-31T14:15:49.293 回答
2

寻找第一个[A-Z]字符(假设地址的非数字部分在范围内开始A-Z

select PATINDEX('%[A-Z]%', '447455 -    1 ABERCORN COTTAGES')
15

拿起连字符位置

select PATINDEX('% - %', '447455 -    1 ABERCORN COTTAGES')
7

拾取领先的数字片段

select SUBSTRING('447455 -    1 ABERCORN COTTAGES', 1,
PATINDEX('% - %', '447455 -    1 ABERCORN COTTAGES'))
447455

拿起地址的文本片段

select SUBSTRING('447455 -    1 ABERCORN COTTAGES', 
PATINDEX('%[A-Z]%', '447455 -    1 ABERCORN COTTAGES'),
LEN('447455 -    1 ABERCORN COTTAGES'))
ABERCORN COTTAGES

用连字符分隔符连接片段

于 2013-05-31T14:07:15.400 回答