Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengeluarkan Aksara Bukan Latin dengan Cekap (seperti Â) daripada SQL Server VARCHAR Lajur?

Bagaimana untuk Mengeluarkan Aksara Bukan Latin dengan Cekap (seperti Â) daripada SQL Server VARCHAR Lajur?

Linda Hamilton
Linda Hamiltonasal
2025-01-11 06:47:45391semak imbas

How to Efficiently Remove Non-Latin Characters (like Â) from SQL Server VARCHAR Columns?

Cara mengosongkan aksara bukan Latin (seperti Â) dalam lajur SQL Server VARCHAR

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.

Penyelesaian peringkat pangkalan data: Fungsi SQL CLR

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:

  1. Buat projek perpustakaan kelas C# dalam Visual Studio.
  2. Namakan semula kelas lalai kepada 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>
  1. Bina projek dan salin StackOverflow.dll yang terhasil ke lokasi yang diketahui pada mesin anda.

  2. Import pemasangan ke dalam Pelayan SQL:

    <code class="language-sql"> CREATE ASSEMBLY [StackOverflow] FROM 'path_to_StackOverflow.dll';</code>
  3. 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.

Penyelesaian peringkat kod C#: Regex.Replace

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn