t-sql 正则表达式(1/2)

t-sql 正则表达式
创建程序集 clrregexclass.cs,
并使用 c:windowsmicrosoft.netframeworkv2.0.50727csc.exe /target:library clrregexclass.cs 编译为 clrregexclass.dll 文件。
using system;
using system.data;
using system.data.sqlclient;
using system.data.sqltypes;
using microsoft.sqlserver.server;
using system.text.regularexpressions;

public partial class regexp
{
// 验证字符串中是否包含与指定的匹配模式一致的字符串
    [sqlfunction(isdeterministic = true, isprecise = true)]
    public static sqlboolean regexismatch(sqlstring expression, sqlstring pattern)
    {
        return new sqlboolean(regex.ismatch(expression.tostring(), pattern.tostring()));
    }

// 替换字符串中与指定的匹配模式一致的字符串
    [sqlfunction(isdeterministic = true, isprecise = true)]
    public static sqlstring regexreplace(sqlstring expression, sqlstring pattern, sqlstring replacement)
    {
        return new sqlstring(regex.replace(expression.tostring(), pattern.tostring(), replacement.tostring()));
    }

// 提取字符串中与指定的匹配模式一致的字符串
    [sqlfunction(isdeterministic = true, isprecise = true)]
    public static sqlstring regexsubstring(sqlstring expression, sqlstring pattern, sqlint32 position, sqlint32 occurrence)
    {
        if (expression.tostring().length < position) return new sqlstring("");
        if (position <= 0) position = 1;
        if (occurrence <= 0) occurrence = 1;

        match m = regex.match(expression.tostring().substring((int) position - 1),pattern.tostring());
        for (int i = 1; i < (int)occurrence; i++)
        {
            m = m.nextmatch();
            if (!m.success) return new sqlstring("");
        }

        return new sqlstring(m.tostring());
    }

首页 1 2 末页

时间: 2024-11-08 19:28:55

t-sql 正则表达式(1/2)的相关文章

CLR SQL SERVER:让正则表达式也加入你的Transaction-SQL

试过Transaction-Sql编程的哥们应该都觉的这东西太恶心了,除了IDE,最恶心得还数编程中涉及的字符 串拼接问题.想象一下:在一个巨复杂的业务逻辑中,里面充满了while,if,case.你必须处理好所有的情 况并按某一规则来拼接字符串.这些字符串可能是Sql,也可能是结果,但不管是什么都是我们的噩梦. 正则表达式是啥相信就不要我介绍了,处理文本的利器呀.虽然Sql Server也支持正则表达式,但使 用比较麻烦,还是自己制作一个正则表达函数来的方便.这节主要涉及了CLR Sql Se

sql基本语句

1.If...Else...语句 格式: If 布尔表达式     {SQL语句或语句块}     [Else     {SQL语句或语句块}] 2.BEGIN...END语句 功能:将多条SQL语句封装起来,构成一个语句块 格式: BEGIN     {sql语句或语句块} ENd 3.WHERE.BREAK.CONTINUE语句 [例]:求1到10之间的奇数数据和 DECLARE @I smallint,@sum smallint SELECT @i=0,@sum=0 WHILE @i>=0

T-SQL查询进阶:基于列的逻辑表达式

引言 T-SQL不仅仅是一个用于查询数据库的语言,还是一个可以对数据进行操作的语言.基于列的CASE表达式就是其中一种,不像其他查询语句可以互相替代(比如用子查询实现的查询也可以使用Join实现),CASE表达式在控制基于列的逻辑大部分是无法替代的.下面文中会详细讲解CASE表达式. 简介 基于列的逻辑表达式,其实就是CASE表达式.可以用在SELECT,UPDATE,DELETE,SET以及IN,WHERE,ORDER BY和HAVING子句之后.由于这里讲的是T-SQL查询,所以只说到CAS

PostgreSQL教程(五):函数和操作符详解(1)_PostgreSQL

一.逻辑操作符:     常用的逻辑操作符有:AND.OR和NOT.其语义与其它编程语言中的逻辑操作符完全相同. 二.比较操作符:     下面是PostgreSQL中提供的比较操作符列表: 比较操作符可以用于所有可以比较的数据类型.所有比较操作符都是双目操作符,且返回boolean类型.除了比较操作符以外,我们还可以使用BETWEEN语句,如:     a BETWEEN x AND y 等效于 a >= x AND a <= y        a NOT BETWEEN x AND y 等

PostgreSQL教程(六):函数和操作符详解(2)_PostgreSQL

六.模式匹配:     PostgreSQL中提供了三种实现模式匹配的方法:SQL LIKE操作符,更近一些的SIMILAR TO操作符,和POSIX-风格正则表达式.     1. LIKE:   复制代码 代码如下:     string LIKE pattern [ ESCAPE escape-character ]     string NOT LIKE pattern [ ESCAPE escape-character ]       每个pattern定义一个字串的集合.如果该str

php中常见的sql攻击正则表达式

  我们都已经知道,在MYSQL 5+中 information_schema库中存储了所有的 库名,表明以及字段名信息.故攻击方式如下: 1. 判断第一个表名的第一个字符是否是a-z中的字符,其中blind_sqli是假设已知的库名. 注:正则表达式中 ^[a-z] 表示字符串中开始字符是在 a-z范围内  代码如下   index.php?id=1 and 1=(SELECT 1 FROM information_schema.tables WHERE TABLE_SCHEMA="blind

SqlParser 一个利用正则表达式解析单句SQL的类_正则表达式

先看要解析的样例SQL语句: 复制代码 代码如下: select * from dual SELECT * frOm dual Select C1,c2 From tb select c1,c2 from tb select count(*) from t1 select c1,c2,c3 from t1 where condi1=1 Select c1,c2,c3 From t1 Where condi1=1 select c1,c2,c3 from t1,t2 where condi3=3

SQL Server 2005 正则表达式使模式匹配和数据提取变得更容易

目录 CLR 用户定义函数模式匹配数据提取模式存储匹配在匹配项中进行数据提取总结 尽管 T-SQL 对多数数据处理而言极其强大,但它对文本分析或操作所提供的支持却很少.尝试使用内置的字符串函数执行任何复杂的文本分析会导致难于调试和维护的庞大的函数和存储过程.有更好的办法吗?   实际上,正则表达式提供了更高效且更佳的解决方案.它在比较文本以便标识记录方面的益处显而易见,但是它的用途并不仅限于此.我们将介绍如何执行各种简单或令人惊异的任务,这些任务在 SQL Server 2000 中被视为不切实

PHP防止SQL注入与几种正则表达式讲解

注入漏洞代码和分析 代码如下: <?php function customerror($errno, $errstr, $errfile, $errline) { echo <b>error number:</b> [$errno],error on line $errline in $errfile<br />; die(); } set_error_handler(customerror,e_error); $getfilter='|(and|or)\\b.+

在SQL中用正则表达式替换html标签

原文:在SQL中用正则表达式替换html标签   由于数据库的一个表字段中多包含html标签,现在需要修改数据库的字段把html标签都替换掉.当然我可以通过写一个程序去修改,那毕竟有点麻烦.直接在查询分析器中执行,但是MS SQL Server并没有提供正则表达式,替换html标签可不那么容易.我们可以通过CLR托管来实现一个通过正则表达式来替换html标签的自定义函数.(注:SQL CLR只能在MS SQL Server 2005或以上版本中适用) 第一步:通过Visual Studio 20