【发布时间】:2010-10-16 14:53:39
【问题描述】:
我应该从地址字段中删除以下内容。
- 将所有名为“Flat”的单词替换为空白,同时删除随之而来的数字。
例如。我有个词叫做“Flat 234 5th Street”。
它应该被替换为 5th Street。
我将查询作为
select
ltrim(rtrim( substring ('Flat 123 5th Street', charindex('Flat ','Flat 123 5th Street') + 5, len ('Flat 123 5th Street'))))
它返回了
第五街 123 号
现在我必须找出直到下一次出现空格之前,我是否有一个数值。
如果是数字,则删除它,否则保留它。
谁能帮帮我。
问候, 盒马
是的,Marc_S,我应该这样做(已编辑)。 我不能用任何其他语言做。应该只在 T-SQL 中执行。
您好 LittleBobbyTales,感谢您的回答。 实际上它不是标准格式,我可能只有 平123
或 Flat 123 5th Street 1st Main Road
或第一主楼1
没有规定我们在 Flat 之后会有 1 个数字或 2 个数字。 可能有也可能根本没有数字。
这两种方法都可以。
【问题讨论】:
-
如果您发布代码或 XML,请在文本编辑器中突出显示这些行,然后单击编辑器工具栏上的“代码”按钮 (101 010) 以很好地格式化和语法高亮!
-
听起来像是正则表达式的完美匹配——不幸的是,SQL Server 的 T-SQL 查询语言在字符串操作/正则表达式匹配方面并不是很强大。你最好用 C# 之类的传统编程语言来做这件事......
-
同意marc_s,但是出于好奇,能否多举一些需要解析的地址字段的例子?
标签: sql sql-server sql-server-2005 tsql