Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengeluarkan Aksara Luar Biasa daripada Lajur VARCHAR SQL Server?

Bagaimana untuk Mengeluarkan Aksara Luar Biasa daripada Lajur VARCHAR SQL Server?

Linda Hamilton
Linda Hamiltonasal
2025-01-11 09:03:45428semak imbas

How to Remove Unusual Characters from a SQL Server VARCHAR Column?

Alih keluar aksara luar biasa daripada lajur SQL Server VARCHAR

Latar belakang:

Aksara bukan standard tertentu, terutamanya aksara dengan diakritik (seperti dengan topi), disimpan dalam lajur varchar SQL Server. Isu ini timbul daripada kawalan terhad ke atas import sumber data .csv.

Penyelesaian:

Pilihan 1: Gunakan ungkapan biasa .NET

Dalam C#, anda boleh menggunakan ungkapan biasa untuk mengalih keluar aksara ini. Anda boleh menggunakan kaedah String.Replace seperti yang ditunjukkan di bawah:

<code class="language-csharp">Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);</code>

Pilihan 2: Cipta fungsi SQL CLR

Memandangkan SQL Server tidak menyokong ungkapan biasa secara asli, anda boleh mencipta fungsi SQL CLR. Ini memerlukan:

  • Buat projek perpustakaan kelas .NET dalam Visual Studio
  • Gunakan ungkapan biasa untuk melaksanakan fungsi Ganti
  • Bina projek dan tambah pemasangan pada pangkalan data SQL Server
  • Buat fungsi SQL CLR yang membungkus fungsi .NET

Pelaksanaan:

Pilihan 1:

<code class="language-csharp">Regex.Replace(inputString, @"[^\u0000-\u007F]", string.Empty);</code>

Pilihan 2:

  • Buat kelas .NET yang dipanggil StackOverflow dengan kod berikut:
<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>
  • Bina projek dan tambah pemasangan pada pangkalan data SQL Server
  • 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>
  • Contoh penggunaan:
<code class="language-sql">SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')</code>

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Aksara Luar Biasa daripada Lajur VARCHAR SQL Server?. 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