정규식을 배우고 있습니다. SQL Select 문에서 열 별칭을 제거하는 메서드가있는 연습을 제안했습니다. 이것은 다음과 같이 작동합니다 :C#과 정규 표현식을 사용하여 SQL select 문에서 별칭 제거하기
- 방법은 AS 키워드와 SQL SELECT 문에서 별칭을 제거 할 수 있습니다 이없이 SQL SELECT 문에서 별칭을 제거 할 수 있습니다
- 방법 "A AS COLUMNA을 선택" 는 AS 키워드 :합니다 ( 연결 작업 문자 등) "작업 문자"가 포함 된 SQL SELECT 문에서 별칭을 제거 할 수 있습니다
- 방법을 "COLUMNB B를 선택" "를 선택 '안녕하세요 || 'world!'AS HelloWorld "
지금까지 특별한 경우에만 작동하는 두 가지 방법을 만들었습니다. 다음 코드는 제가 한 일과 제가 직면 한 문제에 대한 요약을 제공합니다.
static void Main(string[] args)
{
string cols1 = "ColA as AliasA, ColB AliasB , As As ASasas, Asasasas as As";
string cols2 = "'aaa' || 'bbb' AS AliasC , 'ccc' || 'ddd' AliasD";
string answer1 = RemAliases(cols1); // Works fine
string answer2 = RemAliases2(cols2); // Works fine
string answer3 = RemAliases2(cols1); // Doesn't work
string answer4 = RemAliases(cols2); // Doesn't work
}
static string RemAliases2(string inputSql)
{
string pattern1 = @"(.+)\s+AS\s+\w+";
string replacement1 = "$1";
string pattern2 = @"(.+)\s+\w+";
string replacement2 = "$1";
string result = Regex.Replace(inputSql, pattern1, replacement1, RegexOptions.IgnoreCase);
result = Regex.Replace(result, pattern2, replacement2, RegexOptions.IgnoreCase);
return result;
}
static string RemAliases(string inputSql)
{
string pattern1 = @"(\w+)\s+AS\s+\w+";
string replacement1 = "$1";
string pattern2 = @"(\w+)\s+\w+";
string replacement2 = "$1";
string result = Regex.Replace(inputSql, pattern1, replacement1, RegexOptions.IgnoreCase);
result = Regex.Replace(result, pattern2, replacement2, RegexOptions.IgnoreCase);
return result;
}
내가 기대 없습니다 "RemAliases()"를 "cols2"와 잘 작동하기 때문에 "\ w +"는 일치하지 않습니다 "|"문자. 하지만, "RemAliases2()"도 "cols1"과 잘 작동 할 것으로 기대하고있었습니다. 누군가가 왜 "RemAliases2()"가 "cols1"의 경우 제대로 작동하지 않는지 알기 위해 도움을 주실 수 있습니까? 이 정규 표현식을 사용한 방식에 대해 다른 종류의 제안을 제공하십시오.
미리 감사드립니다.
PS : 나는 (.+)\s+AS\s+\w+
와 .NET 2.0