Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर varchar कॉलम से अजीब वर्ण (A टोपी के साथ) निकालें

आप .net . का उपयोग कर सकते हैं नियमित अभिव्यक्ति कार्य। उदाहरण के लिए, Regex.Replace . का उपयोग करना :

Regex.Replace(s, @"[^\u0000-\u007F]", string.Empty);

चूंकि SQL Server में रेगुलर एक्सप्रेशन के लिए कोई समर्थन नहीं है आपको एक SQL CLR बनाने की जरूरत है समारोह। .net . के बारे में अधिक जानकारी SQL Server में एकीकरण यहां पाया जा सकता है:

  • स्ट्रिंग उपयोगिता कार्य नमूना - पूर्ण कार्य उदाहरण
  • एसक्यूएलसीएलआर की सीढ़ी - अभी भी प्रगति पर है
  • एसक्यूएल सर्वर सीएलआर एकीकरण का परिचय - आधिकारिक दस्तावेज

आपके मामले में:

  1. ओपन Visual Studio और Class Library Project बनाएं :

  2. फिर कक्षा का नाम बदलकर StackOverflow . कर दें और निम्न कोड को उसकी फाइल में पेस्ट करें:

    using Microsoft.SqlServer.Server;
    using System;
    using System.Collections.Generic;
    using System.Data.SqlTypes;
    using System.Linq;
    using System.Text;
    using System.Text.RegularExpressions;
    using System.Threading.Tasks;
    
    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));
        }
    }
    
  3. अब, परियोजना का निर्माण करें। SQL Server Management Studio खोलें . अपने डेटाबेस का चयन करें और निम्न के पथ मान को FROM . से बदलें आपके StackOverflow.dll . से मेल खाने के लिए क्लॉज :

    CREATE ASSEMBLY [StackOverflow] FROM 'C:\Users\gotqn\Desktop\StackOverflow\StackOverflow\bin\Debug\StackOverflow.dll';
    
  4. अंत में, SQL CLR बनाएं समारोह:

    CREATE FUNCTION [dbo].[StackOverflowRegexReplace] (@input NVARCHAR(MAX),@pattern NVARCHAR(MAX), @replacement NVARCHAR(MAX))
    RETURNS NVARCHAR(4000)
    AS EXTERNAL NAME [StackOverflow].[StackOverflow].[Replace]
    GO
    

आप RegexReplace . का उपयोग करने के लिए तैयार हैं .net सीधे आपके T-SQL में काम करता है बयान:

    SELECT [dbo].[StackOverflowRegexReplace] ('Hello Kitty Essential Accessory Kit', '[^\u0000-\u007F]', '')

    //Hello Kitty Essential Accessory Kit


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक विशिष्ट मान SQL सर्वर के लिए सभी टेबल, सभी कॉलम खोजें

  2. क्या मैं जॉइन कंडीशन में केस स्टेटमेंट का उपयोग कर सकता हूं?

  3. SQL सर्वर में किसी मौजूदा कॉलम को कंप्यूटेड कॉलम में बदलें (T-SQL उदाहरण)

  4. पहले EF कोड का उपयोग करके समग्र कुंजियों का मानचित्रण करना

  5. दो दशमलव स्थानों के साथ एक संख्या लिखें SQL सर्वर