Pengguna memasukkan istilah pencarian dalam sebuah kotak, dan nilai itu diteruskan ke prosedur tersimpan dan diperiksa terhadap beberapa bidang yang berbeda dalam database. Bidang-bidang ini tidak selalu dari tipe data yang sama.
Satu bidang (nomor telepon) terdiri dari semua angka, jadi ketika memeriksa itu menghapus semua karakter non-numerik dari string menggunakan fungsi .Net CLR.
SELECT dbo.RegexReplace('(123)123-4567', '[^0-9]', '')
Masalahnya adalah, fungsi ini tiba-tiba berhenti berfungsi pada kesempatan dengan kesalahan berikut:
Msg 6533, Level 16, State 49, Line 2 AppDomain MyDBName.dbo [runtime] .1575 diturunkan oleh kebijakan eskalasi untuk memastikan konsistensi aplikasi Anda. Kehabisan memori terjadi saat mengakses sumber daya kritis. System.Threading.ThreadAbortException: Pengecualian jenis 'System.Threading.ThreadAbortException' dilemparkan. System.Threading.ThreadAbortException:
Saya sudah mencoba saran yang diposting di MSDN untuk kesalahan ini, tetapi saya masih mendapatkan masalah. Saat ini, beralih ke server 64-bit bukanlah pilihan bagi kami.
Saya tahu me-restart server melepaskan memori apa pun yang dipegangnya, tetapi itu bukan solusi yang layak di lingkungan produksi.
Apakah ada cara untuk menghapus karakter non-numerik dari string di SQL Server 2005 menggunakan T-SQL saja?
sumber
Saya cukup percaya diri dalam solusi ini. Saya tidak yakin tentang kinerja tetapi pendapat tentang pendekatan ini pasti diterima! Pada dasarnya untuk setiap karakter dalam string @ Strtring jika nilai ASCII karakter adalah antara nilai ASCII '0' dan '9' kemudian simpan, jika tidak gantilah dengan yang kosong.
sumber