Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengeluarkan Aksara Bukan Latin dengan Cekap (seperti Â) daripada SQL Server VARCHAR Lajur?
Apabila mengimport data daripada sumber data pihak ketiga (seperti fail CSV), anda sering menghadapi aksara pelik (seperti Â) dalam lajur SQL Server VARCHAR Ini adalah masalah biasa yang disebabkan oleh kaedah pengekodan yang tidak pasti. Walau bagaimanapun, terdapat cara yang cekap untuk membersihkan dan mengalih keluar aksara ini, pada peringkat pangkalan data dan pada peringkat kod.
Memandangkan SQL Server tidak menyokong ungkapan biasa secara asli, anda boleh mencipta fungsi SQL CLR untuk memanfaatkan keupayaan ekspresi biasa .NET. Langkah-langkah khusus adalah seperti berikut:
StackOverflow
dan tampal kod berikut: <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>
Bina projek dan salin StackOverflow.dll
yang terhasil ke lokasi yang diketahui pada mesin anda.
Import pemasangan ke dalam Pelayan SQL:
<code class="language-sql"> CREATE ASSEMBLY [StackOverflow] FROM 'path_to_StackOverflow.dll';</code>
Buat fungsi 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>
Selepas mencipta fungsi, anda boleh menggunakannya secara langsung dalam pernyataan T-SQL untuk menggantikan aksara dengan cepat dan cekap:
<code class="language-sql">SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')</code>
Ini akan mengembalikan rentetan "Hello Kitty Essential Accessory Kit" dengan aksara  dialih keluar.
Jika anda lebih suka penyelesaian C#, anda boleh menggunakan kaedah Regex.Replace
untuk melakukan penggantian aksara yang sama:
<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>
Kaedah ini menyediakan cara yang mudah dan boleh dipercayai untuk menghapuskan aksara bukan Latin dalam kod C#.
Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Aksara Bukan Latin dengan Cekap (seperti Â) daripada SQL Server VARCHAR Lajur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!