树叶云MYSQL教程MySQL-正则表达式 (树叶云朵拟人句怎么写)

教程大全 2025-07-14 13:21:34 浏览

MySQL 正则表达式

在前面的章节我们已经了解到MySQL可以通过来进行模糊匹配。

MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。

如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似。

下表中的正则模式可应用于 REGEXP 操作符中。

树叶云朵拟人句怎么写
模式 描述
匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。
匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。
匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用像 ‘[.\n]’ 的模式。
字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。
负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’。
匹配 p1 或 p2 或 p3。例如,’z|food’ 能匹配 “z” 或 “food”。'(z|f)ood’ 则匹配 “zood” 或 “food”。
匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
匹配前面的子表达式一次或多次。例如,’zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
n 是一个非负整数。匹配确定的 n 次。例如,’o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。

实例

了解以上的正则需求后,我们就可以根据自己的需求来编写带有正则表达式的SQL语句。以下我们将列出几个小实例(表名:person_tbl )来加深我们的理解:

查找name字段中以’st’为开头的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

查找name字段中以’ok’为结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

查找name字段中包含’mar’字符串的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

查找name字段中以元音字符开头或以’ok’字符串结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

sql存储过程的执行

执行带参数的存储过程的方法如下:Exec sp_configure allow updates,1--允许更新系统表。 exec _ChangeObjectOwnerBatch OldOwner,dbo以上是两个例子。 SQL Server中执行带参数的存储过程的方法是:EXEC 存储过程名字 参数1,参数2,数值参数EXEC 是一个关键字。 字符串参数使用单引号括起来,数值参数不需要使用单引号

oracle存储过程

create table dept (deptno number, dname varchar2(20), loc varchar2(20) ) 1.如果你是取出单个的,你可以定义一个或者多个变量,将取出的值赋给变量 例如: create or replace procedure dept_procedure(a in varchar2) is v_no number; v_a varchar2(20); begin select , into v_no,v_a from dept a where =a; dbms__line(学号为:||v_no||); end; 2.如果你取出的是一个结果集,你可以用游标(一个简单的例子) create or replace procedure dept_procedure(a in varchar2,v_a out dept%rowtype) is --声明游标 cursor c_de(a in varchar2) is select * from dept where dname=a; begin --打开游标,对其中找到的记录进行遍历 open c_de(a); loop fetch c_de into v_a; exit when c_de%notfound; end loop; close c_de; dbms__line(deptno:||v_); dbms__line(dname:||v_); dbms__line(loc:||v_); end; 3.可注意:在创建存储过程的时候加上or replace,如果遇到重名的存储过程将替换掉! 4.定义变量后面记得加上分号 中可以对它直接赋值,可不用set, v_a:=a; (6.给变量赋值的时候注意它的数据类型 a要单引号) 7.如果你这存储过程是将参数赋值给一个你定义的变量的话,那这样你不觉得是多此一举么?一般将参数赋值给你定义的变量的话,可以进行数据类型转换!可在此存储过程中,没发现它的用处 8.你取出来的数据,要放在变量或是游标中,显示出来,不然你写出来的存储过程有什么用呢?所以 select ... 9.我也是刚学oracle的,希望可以互相学习一下,呵呵!上面的如有错误希望可以告诉我一下啊

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐