`
jayghost
  • 浏览: 440426 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

MySql中delimiter的作用

    博客分类:
  • SQL
 
阅读更多

这个命令其实就是告诉mysql解释器,该段命令是否已经结束了,mysql是否可以执行了。
默认情况下,delimiter是分号;。在命令行客户端中,如果有一行命令以分号结束,
那么回车后,mysql将会执行该命令。如输入下面的语句
mysql> select * from test_table;
然后回车,那么MySQL将立即执行该语句。

但有时候,不希望MySQL这么做。在为可能输入较多的语句,且语句中包含有分号。
如试图在命令行客户端中输入如下语句
mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
mysql>     RETURNS varchar(255)
mysql> BEGIN
mysql> IF ISNULL(S) THEN
mysql>    RETURN '';
mysql> ELSEIF N<15 THEN
mysql>     RETURN LEFT(S, N);
mysql> ELSE
mysql>     IF CHAR_LENGTH(S) <=N THEN
mysql>    RETURN S;
mysql>     ELSE
mysql>    RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
mysql>     END IF;
mysql> END IF;
mysql> END;

默认情况下,不可能等到用户把这些语句全部输入完之后,再执行整段语句。
因为mysql一遇到分号,它就要自动执行。
即,在语句RETURN '';时,mysql解释器就要执行了。
这种情况下,就需要事先把delimiter换成其它符号,如//或$$。
mysql> delimiter //
mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT)
mysql>     RETURNS varchar(255)
mysql> BEGIN
mysql> IF ISNULL(S) THEN
mysql>    RETURN '';
mysql> ELSEIF N<15 THEN
mysql>     RETURN LEFT(S, N);
mysql> ELSE
mysql>     IF CHAR_LENGTH(S) <=N THEN
mysql>    RETURN S;
mysql>     ELSE
mysql>    RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5));
mysql>     END IF;
mysql> END IF;
mysql> END;//

这样只有当//出现之后,mysql解释器才会执行这段语句

分享到:
评论

相关推荐

    详解 Mysql中的delimiter定义及作用

    在命令行客户端中,如果有一行命令以分号结束,那么回车后,mysql将会执行该命令。如输入下面的语句 mysql&gt; select * from test_table; 然后回车,那么MySQL将立即执行该语句。 但有时候,不希望MySQL这么做。在为...

    MySql中 delimiter 详解.docx

    在MySQL中,`delimiter`命令是用来设定SQL语句的结束符的,它的主要作用是告诉MySQL解释器何时一个完整的命令结束,从而可以开始执行。在默认情况下,MySQL使用分号(;)作为命令的终止符。这意味着当你在MySQL...

    MySql delimiter的作用是什么

    MySQL中的`delimiter`是一个非常重要的命令,用于定义SQL语句的结束标志。它的主要作用是告诉MySQL解析器何时一个完整的命令或语句结束,从而可以被执行。默认情况下,MySQL使用分号(;)作为语句的结束符。当你在...

    mysql与oracle差异总结

    MySql 使用 DELIMITER 语句来标记函数的开始和结束,而 Oracle 使用 CREATE FUNCTION 语句。在 MySql 中,同时还需要指定函数的定义者和字符集。 2. 变量声明 在 MySql 中,所有的声明必须在函数体之前,全局变量...

    Mysql中文汉字转拼音的实现(每个汉字转换全拼)

    在MySQL中实现中文汉字转拼音的功能,主要是为了方便在数据库查询和数据分析时处理中文文本,尤其是在没有全文索引或者需要进行复杂模糊匹配时。以下是一个简单的实现方法,它利用自定义函数来完成这一任务。 首先...

    mysql中造3千条数据(3种方法)

    MySQL 中造 3000 条数据的三个方法 MySQL 是一种非常流行的关系型数据库管理系统,它提供了多种方式来快速生成大量数据。本文将介绍三种方法来在 MySQL 中造 3000 条数据。 方法一:使用存储过程 存储过程是一种...

    MySQL中创建procedure,function,trigger

    MySQL 中创建存储过程、函数和触发器 MySQL 中创建存储过程、函数和触发器是数据库管理系统中非常重要的组成部分。它们可以帮助开发者简化数据库操作、提高数据库性能和安全性。本文将详细介绍 MySQL 中创建存储...

    mysql 基本命令,及java中访问mysql

    MySQL是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的应用程序中,包括Web应用程序、企业内部系统等。本文将详细介绍MySQL的一些基本命令以及如何在Java中访问MySQL数据库。 1. **启动MySQL...

    MySQL入门+进阶资源合集.pdf

    ### MySQL入门+进阶资源合集 #### 一、MySQL基础知识与入门 ##### 1.1 MySQL基础概念 - **数据库(Database)**:是用于存储数据的逻辑容器,它能够高效地管理...希望这些内容能够帮助你在MySQL的学习旅程中取得进步!

    mysql 计算字符串相似度

    本文将详细介绍如何在 MySQL 中创建一个自定义函数 `sfn_GetSimilar_Rate` 来计算两个中文字符串的相似度,并基于此相似度进行排序。 #### 函数设计与实现 本节将详细介绍 `sfn_GetSimilar_Rate` 函数的设计与实现...

    MySQL基础PDF版

    数据库的主要作用是安全地保存数据,并支持数据的增删改查。 - **数据库类型**:分为关系型数据库(如MySQL、Oracle、SQL Server等)和非关系型数据库(如Redis、MongoDB)。关系型数据库通过外键关联表与表之间的...

    MSql与Mysql的转换

    MS SQL和MySQL在编写这些数据库对象时的语法有所不同,例如,MS SQL使用`CREATE PROCEDURE`,而MySQL使用`DELIMITER`和`END`来定义存储过程。转换时,这些语句需要按MySQL的语法重新编写。 索引也是转换中的关键...

    MySql 中查询树形结构的全部子项列表 Function

    在MySQL数据库中,处理树形结构的数据是一项常见的任务,特别是在构建层级关系如组织架构、菜单系统或者分类目录时。本文将深入探讨如何在MySQL中查询树形结构的全部子项列表,结合提供的`MySql_Link_Function.sql`...

    (mysql面试题)MySQL中的存储过程和触发器的概念及其作用及代码展示.txt

    ### MySQL中的存储过程和触发器的概念及其作用 #### 存储过程 存储过程(Stored Procedure)是MySQL中一种重要的数据库对象,它本质上是一段预先定义并编译好的SQL语句集合,存储在数据库服务器上。当需要执行这些...

    mysql递归查询.doc

    MySQL 递归查询是指在 MySQL 数据库中使用递归函数来实现树形结构数据的查询,例如部门表中某个部门的所有下属部分或者某个部分的所有上级部门。 在 MySQL 中实现递归查询需要使用自定义函数(Stored Function),...

    mysql_regexp_replace.zip_oracle

    标题"mysql_regexp_replace.zip_oracle"表明我们关注的是如何在 MySQL 中实现类似于 Oracle 的 `REGEXP_REPLACE` 函数的功能。Oracle 的 `REGEXP_REPLACE` 函数允许用户使用正则表达式进行复杂的字符串替换操作,而 ...

    csharp mysql客户端类

    为解决在使用官方客户端类执行mysql脚本时,仅用Execute方法,不支持返回数据结果集的问题, 参照官方MySql.Data.dll中的源码写了一个扩展类,可以执行 MySQL Workbench中可执行的任何脚本,并返回select结果集到一...

Global site tag (gtag.js) - Google Analytics