2013-03-22 8 views
-2

C#으로 변환해야하는 SQL 함수가 있습니다. SQL 함수는 LIKE 키워드와 와일드 카드 '_'을 사용합니다. 동일한 C# 함수를 작성하려면 어떻게해야합니까?C#의 SQL LIKE 및 _ 와일드 카드에 해당하는 내용

Create Function [dbo].[fnGetWarehouseByGrade222] 
( 
    @Grade nvarchar(2), 
    @Paste nvarchar(500) 
) 
Returns varchar(500) 

As 
Begin 
    declare @Return varchar(500) 
    if @Grade = '00' or @Grade = '01' or @Grade = '02' or @Grade = '03' or @Grade = '04' 
    begin 
    Select @Return = case when @Paste like 'D__G__DG' then '1GD' 
          when @Paste like 'D__G__DP' then '1GD' 
          when @Paste like 'D__G__D_' then '1GO' 
          when @Paste like 'N__G__D_' then '1GN' 
          when @Paste like 'D__G__H_' then '1GH' 
          when @Paste like 'N__G__H_' then '1GM' 
          when @Paste like 'G__G__H_' then '1GG' end                
    RETURN @Return 
    end 
    RETURN null 
End 
+2

당신은 무엇을 시도 했습니까? 너 무슨 문제있어? – SLaks

+0

원인 SQL 함수 속도가 빠르지 않습니다. SQL CLR을 사용하고 싶습니다. –

+0

이 SQL 함수는 느리지 않습니다. 모든 메모리 내 작업을 수행합니다. 이것이 병목 현상이라고 확신합니까? 당신이 그것을 측정 했습니까? SQL CLR을 호출하면 아마도 CPU 사이클이 더 많이 걸릴 것입니다. – rein

답변

3

내가 코멘트 상자에 직접 쓴 (그래서이 함수는 컴파일하지 않을 수 있습니다)하지만 당신은 정규 표현식을 사용한다 : 다음은 SQL 함수이다. 이것과 비슷한 것이 작동해야합니다.

string GetWarehousByGrade222(string grade, string paste) 
{ 
    if (grade == "00" || grade == "01" || grade == "02" || grade == "03" || grade == "04") { 
    if (Regex.IsMatch(paste, "D..G..DG")) return "1GD"; 
    if (Regex.IsMatch(paste, "D..G..DP")) return "1GD"; 
    if (Regex.IsMatch(paste, "D..G..D.")) return "1GO"; 
    // etc... 
    } 
    return null; 
}