2010-03-25 2 views
4

Microsoft SQL에서 mysql을 위해 만든 데이터베이스 쿼리를 재구성하려고합니다. 나는 정규 표현식 여기microsoft sql of mysql REGEXP

같은 역할을 마이크로 소프트 SQL에서 용어를 찾고 있어요 것은 어떻게 도움이 많이 당신이 할 수있는

답변

5

당신은 (SQL CLR 어셈블리로 컴파일) 이동 :

using System.Collections; 
using System.Text.RegularExpressions; 
using Microsoft.SqlServer.Server; 

public partial class UserDefinedFunctions 
{ 
    [SqlFunction] 
    public static bool RegexMatch(string expr, string regex) 
    { 
    return Regex.IsMatch(expr, regex); 
    } 

    [SqlFunction] 
    public static string RegexReplace(string expr, string regex, string replace) 
    { 
    return Regex.Replace(expr, regex, replace); 
    } 

    [SqlFunction(FillRowMethodName="GetToken", 
     TableDefinition="Value nvarchar(max)")] 
    public static IEnumerable RegexSplit(string expr, string regex) 
    { 
    return Regex.Split(expr, regex); 
    } 

    public static void GetToken(object row, out string str) 
    { 
    str = (string) row; 
    } 
} 
1

유일한 방법 주시면 감사하겠습니다

select * from musicdetails WHERE artistname REGEXP '^".mysql_escape_string($_GET['search'])."$' 

용어를 사용하고의 예입니다 SQL Server (2005 이상)에서 CLR 기능을 사용하는 것입니다. 원시 SQL 조회의 일부로 사용되는 정규 표현식은 표준이 아닙니다. 여기

http://msdn.microsoft.com/en-us/magazine/cc163473.aspx

+0

+1 그리고 내 대답을 참조하십시오 :) – leppie

0

SQL 번호 (SQLsharp)라는 여러 정규 표현식 기능이 무료 SQLCLR 라이브러리가있다. 당신은에서 찾을 수 있습니다 : http://www.SQLsharp.com/

나는 RegEx_IsMatch 함수가 당신이 찾고있는 것이라고 생각합니다.

[내가 SQL의 저자 오전]