2016-06-09 23 views
0

Dies ist die SQL Server 2008-Abfrage.Regulärer Ausdruck für die Adressvalidierung

Ich suche nach Datensätzen, bei denen die Heimatadresse beginnt Mit '#' und dann gefolgt von Ziffern und dann Buchstaben ohne Leerzeichen.

Hier ist ein Beispiel von Adressen in der Tabelle

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') 

I um 1 oder mehr Ziffern nur

#1000munoz River St 
#656ave. Whitehall 

dh 1. Zeichen immer '#', gefolgt auswählen möchten, gefolgt von 1 oder mehr Alphabete. Ich mag keine Leerzeichen zwischen Zahl und Alphabeten wie Satznummer 3.

I

versuchte
Select * 
from dbo.temp 
where charindex('#', Address) = 1 
    and Address like '[#][0-9]^[:b][A-Za-z]%' 

Dies wird keinen Wert zurückgegeben werden, und ich bin nicht sicher, warum.

Kann mir jemand in die richtige Richtung zeigen?

Dank Rs

+2

SQL Server unterstützt keine reguläre Ausdrücke nativ. Der "like" Mustervergleich ist viel begrenzter. –

Antwort

0

SQL Server bietet keine Unterstützung für reguläre Ausdrücke. Es hat eine viel eingeschränkte Syntax. Ich glaube, das funktioniert für Ihre Beispiele:

where address like '#[0-9]%[a-zA-Z] %' and 
     address like '#%[0-9][a-zA-Z] %' 

Dies funktioniert nicht für alle Beispiele, aber es könnte helfen.

0

Wir hatten das gleiche Problem und behob es mit Master Data Services Funktionen. Wir brauchten wirklich RegExp auf SqlServer und bekam schließlich eine Funktion wie diese:

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 

Folgen Sie diesem Link, um mehr Informationen zu erhalten: https://dyball.wordpress.com/2011/11/01/sql-2008-r2-regular-expressions/