2013-05-31 142 views
1

我使用SQL Server 2008中的启动带号,SQL Server 2008中 - 从字符串

我有有记录如下表名为当地人: -

447455 - 1 ABERCORN COTTAGES 
447456 - 12 ACACIA WALK 
447457 - 13 ACTON HILL STUDIOS 
447458 - 21 ADELAIDE COTTAGES 
447459 - 321 ALBERT COTTAGES 
456155 - 722 CLIVE COURT

我想要做的就是删除所有号码在“街”列(可能使用更换),所以记录更新: -

447455 - ABERCORN COTTAGES 
447456 - ACACIA WALK 
447457 - ACTON HILL STUDIOS 
447458 - ADELAIDE COTTAGES 
447459 - ALBERT COTTAGES 
456155 - CLIVE COURT

我曾尝试: -

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)

但是,这只是做的所有记录的空白,对我怎么能解决这个问题有什么建议?

+0

这个问题并没有表现出任何的研究工作。 **做你的作业很重要**。告诉我们你发现了什么,***为什么它不符合你的需求。这表明你已经花时间去尝试帮助你自己了,它使我们避免重申明显的答案,最重要的是它可以帮助你得到更具体和相关的答案。 [FAQ](http://stackoverflow.com/questions/how-to-ask)。 – Kermit

+0

请帮助我们来帮助你...你的表中的字段是什么 - 它们的类型是什么,这些字段在你的例子中分成了哪些部分。你是如何得到显示的输出结果(是一个选择语句?)没有这些答案,没有办法回答你的问题。 – Hogan

+0

使用'CHARINDEX'查找空格字符(即分隔数字和文本)。使用'SUBSTRING'来提取文本,跟在由'CHARINDEX'返回的位置之后。阅读文档[这里](http://msdn.microsoft.com/en-us/library/ms186323.aspx) – shahkalpesh

回答

3

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

UPDATE LOCALS SET 
    Street = SUBSTRING(Street, PATINDEX('%[A-Z]%', Street), LEN(Street)) 
WHERE 
    AtoZIndex > '447454' and AtoZIndex < '457309' 
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 

Pick了地址

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

的文本片段拼接的片段连字符分隔