这是SQL Server 2008查询。
我正在搜索家庭地址以“#”开头,然后是数字,然后是没有空格的字母的记录。
以下是表格中地址的示例
Create table dbo.temp(Address Varchar(200))
INSERT into dbo.temp VALUES('#1000munoz River St')
INSERT into dbo.temp VALUES('#656ave. Whitehall')
INSERT into dbo.temp VALUES('#12 avenue')
INSERT into dbo.temp VALUES('13 Main St')
我只想选择
#1000munoz River St
#656ave. Whitehall
即。第一个字符始终为'#',后跟一个或多个数字,后跟一个或多个字母。我不想在数字和字母之间留出空格,比如记录号3。
我试过
Select *
from dbo.temp
where charindex('#', Address) = 1
and Address like '[#][0-9]^[:b][A-Za-z]%'
这不会返回任何值,我不知道为什么。
有人能指出我正确的方向吗?
由于 RS
答案 0 :(得分:0)
SQL Server不支持正则表达式。它的语法更有限。我相信这适用于你的例子:
where address like '#[0-9]%[a-zA-Z] %' and
address like '#%[0-9][a-zA-Z] %'
这并不适用于所有示例,但它可能会有所帮助。
答案 1 :(得分:0)
我们遇到了同样的问题并使用主数据服务功能修复了它。我们确实需要在SqlServer上使用RegExp,最后得到一个像这样的函数:
CREATE FUNCTION [RegexExtract](@input [nvarchar](4000), @pattern [nvarchar](4000), @group [nvarchar](4000), @mask [tinyint]) RETURNS [nvarchar](4000) WITH EXECUTE AS CALLER, RETURNS NULL ON NULL INPUT AS EXTERNAL NAME [Microsoft.MasterDataServices.DataQuality].[Microsoft.MasterDataServices.DataQuality.SqlClr].[RegexExtract] GO
点击此链接获取更多信息:https://dyball.wordpress.com/2011/11/01/sql-2008-r2-regular-expressions/