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

SQL सर्वर 2012 में varbinary () से varchar (अधिकतम) में कनवर्ट करते समय भाषा विशिष्ट वर्णों को कैसे एन्कोड करें?

सामान्य तौर पर, SQL सर्वर UTF-8 को उच्च सम्मान में नहीं रखता है। हालाँकि, .NET के पास ऐसा करने के तरीके हैं और आप उन्हें CLR एकीकरण के माध्यम से प्राप्त कर सकते हैं।

C# का उपयोग करके इसे संकलित करें:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

namespace UtfLib
{
    public static class UtfMethods
    {
        [SqlFunction(IsDeterministic = true, IsPrecise = true)]
        public static SqlBinary NVarCharToUtf8(SqlString inputText)
        {
            if (inputText.IsNull)
                return new SqlBinary(); // (null)

            return new SqlBinary(Encoding.UTF8.GetBytes(inputText.Value));
        }

        [SqlFunction(IsDeterministic = true, IsPrecise = true)]
        public static SqlString Utf8ToNVarChar(SqlBinary inputBytes)
        {
            if (inputBytes.IsNull)
                return new SqlString(); // (null)

            return new SqlString(Encoding.UTF8.GetString(inputBytes.Value));
        }
    }
}

असेंबली को अपने डेटाबेस में आयात करें और बाहरी फ़ंक्शन बनाएं:

CREATE ASSEMBLY UtfLib
FROM 'C:\UtfLib.dll'
GO
CREATE FUNCTION NVarCharToUtf8 (@InputText NVARCHAR(MAX))
RETURNS VARBINARY(MAX)
AS EXTERNAL NAME UtfLib.[UtfLib.UtfMethods].NVarCharToUtf8
GO
CREATE FUNCTION Utf8ToNVarChar (@InputBytes VARBINARY(MAX))
RETURNS NVARCHAR(MAX)
AS EXTERNAL NAME UtfLib.[UtfLib.UtfMethods].Utf8ToNVarChar

अंतिम चरण, आपको clr सक्षम करना होगा

sp_configure 'clr enabled',1
GO
RECONFIGURE
GO
sp_configure 'clr enabled'  -- make sure it took
GO

और आवाज!

[dbo] से
SELECT dbo.Utf8ToNVarChar(DATA) FROM [dbo].[TABLE_NAME]


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल सर्वर 2008 के साथ अधिसूचना बदलें

  2. केवल गैर-नल कॉलम पर अद्वितीय बाधा

  3. संग्रहीत प्रक्रिया से डेटा पुनर्प्राप्त करें जिसमें एकाधिक परिणाम सेट हैं

  4. डेटाबेस क्वेरी और इन्सर्ट स्पीड किस पर निर्भर करती है?

  5. SQL सर्वर पूर्ण पाठ खोज - एक परिकलित स्तंभ बनाएँ