SQL Server VARCHAR 열에서 특이한 문자 제거
배경:
특정 비표준 문자, 특히 분음 부호가 있는 문자(예: 모자를 쓴 문자)는 SQL Server varchar 열에 저장됩니다. 이 문제는 .csv 데이터 원본 가져오기에 대한 제한된 제어로 인해 발생합니다.
해결책:
옵션 1: .NET 정규식 사용
C#에서는 정규식을 사용하여 이러한 문자를 제거할 수 있습니다. 아래와 같이 String.Replace 메서드를 사용할 수 있습니다.
<code class="language-csharp">Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);</code>
옵션 2: SQL CLR 함수 생성
SQL Server는 기본적으로 정규식을 지원하지 않으므로 SQL CLR 함수를 만들 수 있습니다. 이를 위해서는 다음이 필요합니다:
구현:
옵션 1:
<code class="language-csharp">Regex.Replace(inputString, @"[^\u0000-\u007F]", string.Empty);</code>
옵션 2:
<code class="language-csharp">[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>
<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>
<code class="language-sql">SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')</code>
위 내용은 SQL Server VARCHAR 열에서 비정상적인 문자를 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!