타사 데이터 소스(예: CSV 파일)에서 데이터를 가져올 때 SQL Server VARCHAR 열에 이상한 문자(예: Â)가 자주 표시됩니다. 이는 불확실한 인코딩 방법으로 인해 발생하는 일반적인 문제입니다. 그러나 데이터베이스 수준과 코드 수준 모두에서 이러한 문자를 정리하고 제거하는 효율적인 방법이 있습니다.
SQL Server는 기본적으로 정규식을 지원하지 않으므로 SQL CLR 함수를 만들어 .NET의 정규식 기능을 활용할 수 있습니다. 구체적인 단계는 다음과 같습니다.
StackOverflow
으로 바꾸고 다음 코드를 붙여넣습니다. <code class="language-csharp">public class StackOverflow { [SqlFunction(DataAccess = DataAccessKind.None, IsDeterministic = true, Name = "RegexReplace")] public static SqlString Replace(SqlString sqlInput, SqlString sqlPattern, SqlString sqlReplacement) { string input = (sqlInput.IsNull) ? string.Empty : sqlInput.Value; string pattern = (sqlPattern.IsNull) ? string.Empty : sqlPattern.Value; string replacement = (sqlReplacement.IsNull) ? string.Empty : sqlReplacement.Value; return new SqlString(Regex.Replace(input, pattern, replacement)); } }</code>
프로젝트를 빌드하고 결과 StackOverflow.dll
를 컴퓨터의 알려진 위치에 복사합니다.
어셈블리를 SQL Server로 가져옵니다.
<code class="language-sql"> CREATE ASSEMBLY [StackOverflow] FROM 'path_to_StackOverflow.dll';</code>
SQL CLR 함수 만들기:
<code class="language-sql"> CREATE FUNCTION [dbo].[StackOverflowRegexReplace] (@input NVARCHAR(MAX), @pattern NVARCHAR(MAX), @replacement NVARCHAR(MAX)) RETURNS NVARCHAR(4000) AS EXTERNAL NAME [StackOverflow].[StackOverflow].[Replace] GO</code>
함수를 만든 후 T-SQL 문에서 직접 사용하여 빠르고 효율적으로 문자를 바꿀 수 있습니다.
<code class="language-sql">SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')</code>
이렇게 하면 문자가 제거된 "Hello Kitty Essential 액세서리 키트" 문자열이 반환됩니다.
C# 솔루션을 선호하는 경우 Regex.Replace
메서드를 사용하여 동일한 문자 교체를 수행할 수 있습니다.
<code class="language-csharp">string input = "Hello Kitty Essential Accessory Kit"; string output = Regex.Replace(input, @"[^\u0000-\u007F]", string.Empty); Console.WriteLine(output); // "Hello Kitty Essential Accessory Kit"</code>
이 방법은 C# 코드에서 라틴어가 아닌 문자를 제거하는 간단하고 안정적인 방법을 제공합니다.
위 내용은 SQL Server VARCHAR 열에서 라틴어가 아닌 문자(예: Â)를 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!