SQL Server uses regular expressions

Source: Internet
Author: User
Tags visual studio 2010

Recently, due to project requirements, regular expressions need to be used in SQL Server. Because SQL server itself does not support regular expressions, CLR functions are required.

Record the steps here and share them with you. Although it is original, you can refer to the online articles.

1. Use vs2010 to create a new project, select Visual C # SQL clr database project, and enter the project name. Here I am: sqlclrfunctions

Note: Because SQL Server 2008 R2 is used, select. NET Framework 3.5 (this is important)

2. Add a class to the project. I named it sqlclrfunctions. CS.

3. In the pop-up dialog box, enter sqlclrfunctions. CS.

4. Enter the following C # code:

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.SqlTypes;using System.Text.RegularExpressions;namespace ClrFunctions{    public static class SqlClrFunctions    {        static SqlClrFunctions() { }                      [Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true, IsPrecise = true)]        public static SqlBoolean RegexLike(SqlString input, SqlString pattern, SqlInt32 options)        {            if (input.IsNull || pattern.IsNull)            {                return new SqlBoolean(false);            }            bool result = Regex.IsMatch(input.Value, pattern.Value, (RegexOptions)options.Value);            return new SqlBoolean(result);        }        [Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true, IsPrecise = true)]        public static SqlString RegexReplace(SqlString input, SqlString pattern, SqlString replacement, SqlInt32 options)        {            if (input.IsNull || pattern.IsNull || replacement.IsNull)            {                return input;            }            string s = Regex.Replace(input.Value, pattern.Value, replacement.Value, (RegexOptions)options.Value);            return new SqlString(s);        }        //    RegexOptions.None, 0;        //    RegexOptions.IgnoreCase, 1;        //    RegexOptions.Multiline, 2;        //    RegexOptions.ExplicitCapture, 4;        //    RegexOptions.Compiled, 8;        //    RegexOptions.Singleline, 16;        //    RegexOptions.IgnorePatternWhitespace, 32;        //    RegexOptions.RightToLeft, 64;        //    RegexOptions.ECMAScript, 256;        //    RegexOptions.CultureInvariant, 512;        //    (RegexOptions.IgnoreCase | RegexOptions.Multiline), 3;    }}

5. Click Generate or press the shortcut key Ctrl + Shift + B.

6. Execute the following SQL script to allow the execution of CLR Functions

sp_configure 'show advanced options', 1;GORECONFIGURE WITH OVERRIDE;GOsp_configure 'clr enabled',1 ;GORECONFIGURE WITH OVERRIDE;GO

7. Execute the SQL script. The DLL here is the complete path of the actual DLL.

CREATE ASSEMBLY [SqlClrFunctions]Authorization [dbo]FROM 'D:\users\mark\documents\visual studio 2010\Projects\SqlClrFunctions\SqlClrFunctions\bin\Debug\SqlClrFunctions.dll' WITH PERMISSION_SET = SAFE

8. Execute an SQL script to create a function:

CREATE FUNCTION dbo.fn_RegexReplace(@input nvarchar(4000),@pattern nvarchar(1000),@replacement nvarchar(1000),@options INT ) RETURNS nvarchar(4000)  AS EXTERNAL NAME SqlClrFunctions.[ClrFunctions.SqlClrFunctions].RegexReplace; 

9. Run the SQL test:

SELECT dbo.fn_RegexReplace('ABC)DEF.ABCDEF (ABCD GGGG ABC 900 ABC','(?i)(?<=^|[\s()])ABC(?=[\W]|$)','123',0);

10. Check the result:

Continued:

If we want to release the script, it may be inconvenient to directly use the DLL. Is there a better way? Of course, see:

1. In SSMs (SQL Server Manager), expand the database name> programmable> Assembly name in step 1.

2. Here we can see the following SQL script:

USE [Test]GO/****** Object:  SqlAssembly [SqlClrFunctions]    Script Date: 08/18/2013 22:50:06 ******/CREATE ASSEMBLY [SqlClrFunctions]AUTHORIZATION [dbo]FROM 0x4D5A90000300000004000000FFFF0000B800000000000000400000000000000000000000000000000000000000000000000000000000000000000000800000000E1FBA0E00B409CD21B8014CCD21546869732070726F6772616D2063616E6E6F742062652072756E20696E20444F53206D6F64652E0D0D0A2400000000000000504500004C01030095DD10520000000000000000E00002210B010B00000A00000006000000000000FE280000002000000040000000004000002000000002000004000000000000000400000000000000008000000002000000000000030040850000100000100000000010000010000000000000100000000000000000000000B02800004B000000004000006803000000000000000000000000000000000000006000000C000000082800001C0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000080000000000000000000000082000004800000000000000000000002E746578740000000409000000200000000A000000020000000000000000000000000000200000602E72737263000000680300000040000000040000000C0000000000000000000000000000400000402E72656C6F6300000C0000000060000000020000001000000000000000000000000000004000004200000000000000000000000000000000E028000000000000480000000200050010210000F806000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A002A00133003004B00000001000011000F00280F00000A2D0C0F01280F00000A16FE012B01160C082D0A0016731000000A0B2B240F00281100000A0F01281100000A0F02281200000A281300000A0A06731000000A0B2B00072A00133004005600000002000011000F00280F00000A2D150F01280F00000A2D0C0F02280F00000A16FE012B01160C082D0500020B2B2B0F00281100000A0F01281100000A0F02281100000A0F03281200000A281400000A0A06731500000A0B2B00072A000042534A4201000100000000000C00000076322E302E35303732370000000005006C0000005C020000237E0000C80200002403000023537472696E677300000000EC0500000800000023555300F405000010000000234755494400000004060000F400000023426C6F620000000000000002000001471502000900000000FA2533001600000100000015000000020000000300000007000000150000000D00000002000000010000000300000000000A0001000000000006004B0044000A007A0065000A00850065000A008F0065000600E300D10006000001D10006001D01D10006003C01D10006005501D10006006E01D10006008901D1000600A401D1000600DC01BD010600F001D10006001C0209023F003002000006005F023F0206007F023F020A00B8029D020E000103E2020E000703E2020000000001000000000001000100810100001E002E00050001000100502000000000911852000A000100542000000000960098000E000100AC20000000009600A2001900040000000100AF0000000200B50000000300BD0000000100AF0000000200B50000000300C50000000400BD002900FA0026003100FA0026003900FA0026004100FA0026004900FA0026005100FA0026005900FA0026006100FA0026006900FA002B007100FA0026007900FA0030008900FA0036009100FA003B009900FA003B001900CD0264001100FA002B001900D80268002100D8026C00A10014037000A1001C037F001900FA0026002E002B008F002E006B00D4002E000B008F002E001300A4002E001B00A4002E002300A4002E003300AA002E003B00A4002E004B00A4002E005B00C2002E006300CB00400073003F00600073003F007800880004800000010000007213CA9F0000000000001E00000002000000000000000000000001003B0000000000020000000000000000000000010059000000000002000000000000000000000001004400000000000000003C4D6F64756C653E0053716C436C7246756E6374696F6E732E646C6C0053716C436C7246756E6374696F6E7300436C7246756E6374696F6E73006D73636F726C69620053797374656D004F626A656374002E6363746F720053797374656D2E446174610053797374656D2E446174612E53716C54797065730053716C426F6F6C65616E0053716C537472696E670053716C496E7433320052656765784C696B650052656765785265706C61636500696E707574007061747465726E006F7074696F6E73007265706C6163656D656E740053797374656D2E5265666C656374696F6E00417373656D626C795469746C65417474726962757465002E63746F7200417373656D626C794465736372697074696F6E41747472696275746500417373656D626C79436F6E66696775726174696F6E41747472696275746500417373656D626C79436F6D70616E7941747472696275746500417373656D626C7950726F6475637441747472696275746500417373656D626C79436F7079726967687441747472696275746500417373656D626C7954726164656D61726B41747472696275746500417373656D626C7943756C747572654174747269627574650053797374656D2E52756E74696D652E496E7465726F70536572766963657300436F6D56697369626C6541747472696275746500417373656D626C7956657273696F6E4174747269627574650053797374656D2E446961676E6F73746963730044656275676761626C6541747472696275746500446562756767696E674D6F6465730053797374656D2E52756E74696D652E436F6D70696C6572536572766963657300436F6D70696C6174696F6E52656C61786174696F6E734174747269627574650052756E74696D65436F6D7061746962696C697479417474726962757465004D6963726F736F66742E53716C5365727665722E5365727665720053716C46756E6374696F6E417474726962757465006765745F49734E756C6C006765745F56616C75650053797374656D2E546578742E526567756C617245787072657373696F6E730052656765780052656765784F7074696F6E730049734D61746368005265706C616365000003200000000000FC9F56A0249CA844BA8F0B205D51E38B0008B77A5C561934E089030000010A00031109110D110D11110C0004110D110D110D110D1111042001010E0420010102052001011141042001010803200001240100020054020F497344657465726D696E69737469630154020949735072656369736501032000020320000E03200008070003020E0E1155060703021109020800040E0E0E0E11550607030E110D021401000F53716C436C7246756E6374696F6E73000005010000000017010012436F7079726967687420C2A920203230313300000801000701000000000801000800000000001E01000100540216577261704E6F6E457863657074696F6E5468726F777301000000000095DD105200000000020000008A00000024280000240A00005253445352F1CA3693EC6A42ACFC684F1C57210F09000000643A5C75736572735C6D61726B5C646F63756D656E74735C76697375616C2073747564696F20323031305C50726F6A656374735C53716C436C7246756E6374696F6E735C53716C436C7246756E6374696F6E735C6F626A5C44656275675C53716C436C7246756E6374696F6E732E706462000000D82800000000000000000000EE280000002000000000000000000000000000000000000000000000E02800000000000000005F436F72446C6C4D61696E006D73636F7265652E646C6C0000000000FF250020400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100100000001800008000000000000000000000000000000100010000003000008000000000000000000000000000000100000000004800000058400000100300000000000000000000100334000000560053005F00560045005200530049004F004E005F0049004E0046004F0000000000BD04EFFE0000010000000100CA9F721300000100CA9F72133F000000000000000400000002000000000000000000000000000000440000000100560061007200460069006C00650049006E0066006F00000000002400040000005400720061006E0073006C006100740069006F006E00000000000000B00470020000010053007400720069006E006700460069006C00650049006E0066006F0000004C0200000100300030003000300030003400620030000000480010000100460069006C0065004400650073006300720069007000740069006F006E0000000000530071006C0043006C007200460075006E006300740069006F006E007300000040000F000100460069006C006500560065007200730069006F006E000000000031002E0030002E0034003900370038002E00340030003900300036000000000048001400010049006E007400650072006E0061006C004E0061006D0065000000530071006C0043006C007200460075006E006300740069006F006E0073002E0064006C006C0000004800120001004C006500670061006C0043006F007000790072006900670068007400000043006F0070007900720069006700680074002000A90020002000320030003100330000005000140001004F0072006900670069006E0061006C00460069006C0065006E0061006D0065000000530071006C0043006C007200460075006E006300740069006F006E0073002E0064006C006C000000400010000100500072006F0064007500630074004E0061006D00650000000000530071006C0043006C007200460075006E006300740069006F006E007300000044000F000100500072006F006400750063007400560065007200730069006F006E00000031002E0030002E0034003900370038002E00340030003900300036000000000048000F00010041007300730065006D0062006C0079002000560065007200730069006F006E00000031002E0030002E0034003900370038002E0034003000390030003600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000C000000003900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000WITH PERMISSION_SET = SAFEGO

3. In this way, we can directly use SQL scripts without the need for DLL.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.