2017-11-17 6 views
0

공백 ()과 밑줄 문자 (_)로 변환하려는 하이픈 (-)을 포함하는 데이터가 있습니다. 다른 언어 (예 : R)에서는 다음과 같이 쓸 수 있습니다.Azure/U-SQL - Regex 대체

var1 <- gsub(var1, "s+|\\-", "_") 

여러 문자를 찾아서 다른 문자로 변환합니다.

U-SQL에서이 작업을 수행 할 수있는 방법이 있습니까? 편집

:

나는이 시도하고 오류없이 실행되지만 데이터를 변경하지 않은 :

@t2 = SELECT var1, 
      var2, 
      var3.Replace("s+|\\'|\\-","_") AS var3   
    FROM @t1; 
+1

나는 당신이'gsub (var1, "\\ s + | -", "_")'을 의미한다고 생각합니다. REGEXP_REPLACE 함수가 없습니까? –

+1

내장되어 있는지는 모르지만 .NET. System.Text.RegularExpressions.Regex.Replace (src, pattern, repl) '를 사용할 수있는 것처럼 보입니다. –

+0

CLR을 사용하여 자신의 어셈블리를 정의 할 수 있습니다. 요점 [여기] (https://web.archive.org/web/20111230084415/http://msdn.microsoft.com/en-us/magazine/cc163473.aspx). 참고 : Azure SQL이 괜찮습니까? – PJProudhon

답변

2

당신은 거의 거기를하지만 당신은 정규 표현식의 한 대신 System.String.Replace를 사용하는 . 그래서

@t2 = SELECT var1, 
     var2, 
     var3.Replace("s+|\\'|\\-","_") AS var3   
FROM @t1; 

@t2 = SELECT var1, 
     var2, 
     Regex.Replace(var3, "s+|\\'|\\-", "_") AS var3   
FROM @t1; 

에 편집을 변경 : 나는 내가 표현 자체를 확인하지 않았다 정규 표현식에 전문가가 아니다.

0
@someData = 
SELECT * FROM 
    (VALUES 
    ("tic tac-toe") 
    ) AS T(col1); 

DECLARE @pattern string = "\\s|-"; 

@result = 
SELECT col1 AS original, 
     Regex.Replace(col1, "\\s", "_") AS regex_replaceSpace, 
     Regex.Replace(col1, "-", "_") AS regex_replaceHypen, 
     Regex.Replace(col1, "\\055", "_") AS regex_replaceHypenDecimal, 
     Regex.Replace(col1, "\\s|-", "_") AS regex_replaceBoth, 
     Regex.Replace(col1, @"\s|-", "_") AS regex_replaceBoth_verbatim, 
     Regex.Replace(col1, @pattern, "_") AS regex_replaceBoth_pattern, 

     col1.Replace(" ", "_") AS string_replaceSpace, 
     col1.Replace("-", "_") AS string_replaceHypen, 
     col1.Replace("-", "_").Replace(" ", "_") AS string_replaceBoth 
FROM @someData; 

OUTPUT @result 
TO "/Replace.csv" 
USING Outputters.Csv(outputHeader: true);