2
ฉันจะตัดอักขระที่ไม่ใช่ตัวเลขออกจากสตริงได้อย่างไร
ผู้ใช้ป้อนคำค้นหาในกล่องและค่านั้นจะถูกส่งผ่านไปยังขั้นตอนการจัดเก็บและตรวจสอบกับเขตข้อมูลที่แตกต่างกันไม่กี่ในฐานข้อมูล ฟิลด์เหล่านี้ไม่ได้เป็นชนิดข้อมูลเดียวกันเสมอไป หนึ่งฟิลด์ (หมายเลขโทรศัพท์) ประกอบด้วยตัวเลขทั้งหมดดังนั้นเมื่อตรวจสอบจะตัดอักขระที่ไม่ใช่ตัวเลขทั้งหมดออกจากสตริงโดยใช้ฟังก์ชัน. Net CLR SELECT dbo.RegexReplace('(123)123-4567', '[^0-9]', '') ปัญหาคือฟังก์ชั่นนี้หยุดทำงานทันทีที่มีข้อผิดพลาดดังต่อไปนี้: ข่าวสารเกี่ยวกับ 6533, ระดับ 16, สถานะ 49, บรรทัด 2 AppDomain MyDBName.dbo [runtime] .1575 ถูกยกเลิกการโหลดโดยนโยบายการเลื่อนระดับเพื่อให้แน่ใจว่า ความสอดคล้องของใบสมัครของคุณ หน่วยความจำไม่เพียงพอเกิดขึ้นขณะเข้าถึงทรัพยากรที่สำคัญ System.Threading.ThreadAbortException: ข้อยกเว้นชนิด 'System.Threading.ThreadAbortException' ถูกส่งไป System.Threading.ThreadAbortException: ฉันลองคำแนะนำที่โพสต์บนMSDNสำหรับข้อผิดพลาดนี้ แต่ฉันยังคงพบปัญหา ในขณะนี้การสลับไปใช้เซิร์ฟเวอร์ 64 บิตไม่ใช่ตัวเลือกสำหรับเรา ฉันรู้ว่าการรีสตาร์ทเซิร์ฟเวอร์จะปล่อยหน่วยความจำใด ๆ ก็ตาม แต่นั่นไม่ใช่วิธีแก้ปัญหาที่ใช้งานได้ในสภาพแวดล้อมการใช้งานจริง มีวิธีการแยกอักขระที่ไม่ใช่ตัวเลขออกจากสตริงใน SQL Server 2005 โดยใช้ T-SQL เท่านั้นหรือไม่