mysql_函数

函数:
将一段代码块封装到一个结构中,在需要执行代码块的时候,调用结构即可(代码复用)

系统函数:系统定义好的函数,直接调用即可,任何函数都有返回值,因此函数的调用时通过select调用。

mysql中,字符是基本单位
substring:字符串截取(字符为单位)
--定义两个变量
set @cn = ‘世界你好‘
set @en = ‘hello world‘
select substring(@cn,1,1);
select substring(@en,1,1);
mysql位置下标从1开始,截取单位为字符
char_length;字符长度
length:字节长度,和当前编码有关
-- 字符串长度
select char_length(@cn),char_length(@en),length(@cn),length(@en);

instr:在某个字符串是否在某个字符串中,存在返回位置,0代表没找到
-- 字符串查找
select instr(@cn,‘世界‘),instr(@en,‘ll‘),instr(@cn,‘拜拜‘);
lPad:左填充,将字符串按照某个指定方式,填充到指定长度
-- 字符串填充
select lpad(!cn,20,‘欢迎‘),lpad(@en,20,‘hello‘);
insert:替换,找到目标位置,指定长度的的字符串,替换为目标字符串
-- 字符串替换
select insert(@en,3,3,‘y‘);
strcmp:字符串比较,小-1,等0,大1,不区分大小写
-- 字符串比较
set @f = ‘hello‘;
set @s = ‘hey‘;
set @t = ‘HEY‘;
select strcmp(@f,@s),strcmp(@f,@t),strcmp(@f,@f);

自定义函数:
函数要素:函数名,参数,返回值,函数体(作用域)

创建函数:
语法:create function 函数名([形参列表]) returns 数据类型 --固定要反悔的数据类型
begin
-- 函数体
-- 返回值 return 类型
end

-- 定义函数
create function display() returns int
return 100;
自定义函数与系统函数一样
select 函数名(实参列表)
select display1();

查看函数
show function status[like ‘pattern‘];
查看函数创建语句:
show create function 函数名;
use information_schema;

修改&删除
函数只能先删除后新增
drop function 函数名;
--删除函数
drop function display1();

函数参数
参数:形参、实参,实参可以是变量,形参必须制定数据类型
function 函数名(形参名字 形参类型)
-- 计算1到指定书的和
delimiter $$
create function display2(int_1 int) returns int
begin
-- 定义条件变量
set @i = 1;
set @res = 0;
-- 循环求和
while @i <= int_1 do
-- 求和,任何变量要修改,必须使用set关键字
-- mysql没有+=,++
set @res = @res [email protected];
-- 修改循环变量
set @i = @i +1;
end while
-- 返回值
return @res

end
$$
delimiter ;

在函数内部使用@定义的变量在函数外部也可以访问

作用域;mysql中的作用域与js中的作用域一样,全局变量可以再任何地方使用,局部变量只能在函数内部使用

全局变量:使用set关键字定义,使用@符号标志
局部变量:使用declare关键字声明,没有@符号,所有的局部变量必须在函数体之前
-- 求1到指定书之间的和,要求5的倍数不加

delimiter $$
create function display3(int_1 int) returns int
begin
-- 声明变量,循环变量,结果变量
declare i int default 1;
decalre res int default 0;-- 定义局部变量可以有属性
-- 循环判断
mywhile:while i <= int_1 do
-- 相加;判断
if i % 5 = 0 then
-- 修改循环条件
set i = i +1;
-- 不符合条件:循环从新来过
iterate mywhile;

end if;
--相加
set res = res +i;
-- 改变循环变量
set i = i+1;
end while;
return res;
end
$$
delimiter ;

时间: 2024-12-19 00:25:57

mysql_函数的相关文章

编写SQL时PHP开发人员所犯的5个常见错误

本文和大家分享的主要是编写SQL时PHP开发人员常犯的一些错误,一起来看看吧,希望对大家学习php有所帮助. 杜绝使用MySQL API的旧版本 使用PHP开发时有好几种方法可以连接MySQL数据库.最常见的是MySQL API.MySQLi API和PDO API(PHP数据对象).与MySQL API旧版本相比,后面两种方法支持更多的功能,并且更加安全.如果你使用的是旧的"mysql_"函数,那么你应该马上放下手上的工作,然后开始学习新的PDO API.这些旧的 mysql函数被弃

PHP代码优化

1 代码优化 1 尽量静态化 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍. 当然了,这个测试方法需要在十万级以上次执行,效果才明显. 其实静态方法和非静态方法的效率主要区别在内存:静态方法在程序开始时生成内存,实例方法(非静态方法)在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例再调用,静态速度很快,但是多了会占内存. 任何语言都是对内存和磁盘的操作,至于是否面向对象,只是软件层的问题,底层都是一样的,只是实现方法不同.静态

IIS7 IIS8 中多个版本php共存的方法

原文地址: https://blog.cozof.com/pieces/54.shtml 最近又重回.net,用回IIS.然后用到某个php开源项目,需要低版本的php,之前装的一个php5.5不能用,所以决定降一下版本,后面发现其实可以多个版本共用.于是打算分享下.分享之前网上先搜了下,有发现有人实现了,但方法不同,所以还是分享下: 我的电脑是win7 64位 php可以在官网下载http://windows.php.net/download/,php 5.4之前的版本似乎没有了,旧版本我是其

10 件在 PHP 7 中不要做的事情

1. 不要使用mysql_函数 这一天终于来了,从此你不仅仅“不应该”使用mysql_函数.PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的mysqli_函数,或者更灵活的 PDO 实现. 2. 不要编写垃圾代码 这一条可能易于理解,但是会变得越来越重要,因为 PHP 7 的速度提升可能会隐藏你的一些问题.不要仅仅满足于你的站点速度,因为迁移到 PHP 7 才让它变快. 为了理解速度有多重要,以及如何把事情做得更好,请看一看我们的文章速度优化入门指南. 作为一名开发者,你应

10件在PHP7中不要做的事情

1. 不要使用mysql_函数 这一天终于来了,从此你不仅仅“不应该”使用mysql_函数.PHP 7 已经把它们从核心中全部移除了,也就是说你需要迁移到好得多的mysqli_函数,或者更灵活的 PDO 实现. 2. 不要编写垃圾代码 这一条可能易于理解,但是会变得越来越重要,因为 PHP 7 的速度提升可能会隐藏你的一些问题.不要仅仅满足于你的站点速度,因为迁移到 PHP 7 才让它变快. 为了理解速度有多重要,以及如何把事情做得更好,请看一看我们的文章速度优化入门指南. 作为一名开发者,你应

关于php7.0下Sqli-labs搭建的小问题

由于前文中kali版本较新,默认安装的是php7.0(this is the problem)PHP 5 的使用者可以使用 mysql extension,mysqli 和 PDO_MYSQL ,但是PHP 7移除了mysql extension,只剩下后面两种选择.因此在Sqli-labs与数据库连接,查询的时候,会出现一些问题.我们安装Sqli-labs的时候必需把相关数据库的函数改为mysqli的形式 一开始点击setup db的时候,会停留在页面 进入目录查看代码cd /var/www/

PHP Mysql support: 是mysql 还是mysqlnd?

您正在使用其中一个备用存储库安装现代版本的php,突然间您遇到了一个令人困惑的选择.你想在php程序中支持mysql(mysqli或PDO-mysql).你会怎么选择?? 首先,您可能应该使用PDO.与mysqli相比,它只是一个更干净的数据库界面,如果你使用像Doctrine2这样的ORM,它也往往是支持的选项.? 但是你可能已经发现安装PDO软件包并不能让你支持MySQL.? 那么这2个套餐是什么?一旦我们将webtatic设置为回购,那么让我们看看Centos下的yum向我们展示了什么:

MYSQL_连接字符串函数

1.concat ()函数 1.1 MySQL的concat函数可以连接一个或者多个字符串,如 mysql> select concat('10'); +--------------+ | concat('10') | +--------------+ | 10 | +--------------+ 1 row in set (0.00 sec) mysql> select concat('11','22','33'); +------------------------+ | concat(

MySQL_基础_存储过程和函数

存储过程和函数 含义:一组预先编译好的SQL语句的集合,理解成批处理语句 1.提高代码的重用性 2.简化操作 3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率 区别: 存储过程:可以有0个返回,也可以有多个返回,适合做批量插入.批量更新 存储函数:有且仅有1个返回,适合做处理数据后返回一个结果 存储过程 语法 创建过程 语法: CREATE PROCEDURE 存储过程名(参数列表) BEGIN 存储过程体(一组合法的SQL语句) END 说明: 1.参数列表包含三部分 参数模式