2010-11-05 22 views
6

Aşağıdaki MySQL ifadesinin SQL Server eşdeğeri nedir?MySQL REGEXP to SQL Server

... WHERE somefield REGEXP '^[[:blank:]]*ASD[[:blank:]]*$|^[[:blank:]]*ASD[[:blank:]]*[[.vertical-line.]]|[[.vertical-line.]][[:blank:]]*ASD[[:blank:]]*$|[[.vertical-line.]][[:blank:]]*ASD[[:blank:]]*[[.vertical-line.]]' 
+0

[SQL Server sunucularında normal ifadeler var mı?] (Http://stackoverflow.com/questions/267921/regular-expressions-in-sql-server-servers) –

+1

Özellikle düzenli ifadeler aramıyorum MSSQL'de sadece eşdeğer bir ifade istiyorum. – akosch

+0

Bu gönderiyi kontrol edin: http://stackoverflow.com/questions/267921/regular-expressions-in-sql-server-servers Bu yardımcı olur umarım. – Hal

cevap

3

Maalesef mssql regex destek olan bir mil tarafından düzenli ifade yılların işlevselliği üzerinde özlüyor "gibi" en yakın operatörüdür, korkunç. İfadeleri birden fazla benzer deyime bölmek ve muhtemelen başarmaya çalıştığınız şeylere öykünmek için kirli bir dize manipülasyonu yapmak zorundasınız.

Örneğin [[: blank:]] ile [] ([Boşluk Sekmesi] okuyun) eşleştirirken, sıfır veya daha fazla eşleştirmeyi zorlayamayız, bunun yerine bunları ifadeden çıkarmamız gerekir; Bu 'ASD' ile eşleşir; dolayısıyla, değiştirilmemiş dizede ASD'nin varlığını test etmemiz gerekir.

Sanırım aşağıdakiler normal ifadenizi değiştirecek ancak hızlı bir şekilde bir araya getirildiğinden dikkatli bir şekilde test edin.

replace(replace(somefield,' ',''),' ','') in ('ASD','|ASD','|ASD|','ASD|') 
and 
somefield like '%ASD%' 

Yine değiştir değiştirmelerimde bir boşluk diğeri bir sekme.