mysql中有关树的函数】的更多相关文章

用mysql客户端在库中建立函数queryOrgChildren(查找子节点)和queryOrgLevel(查看当前节点在树中的级别):DROP FUNCTION IF EXISTS `queryOrgChildren`;CREATE  FUNCTION `queryOrgChildren`(id INT) RETURNS varchar(2000)BEGINDECLARE tempChd VARCHAR(2000); SET tempChd = cast(id as char);IF temp…
翻阅mysql手册时,看到有个示例使用了bit_or方法来去除重复的数据,一开始没看明白,后来看明白之后感觉非常巧妙.示例要实现的功能就是计算每月有几天有访问,先把示例摘录在这里. 1 2 3 4 5 6 7 -- 创建表 CREATE TABLE t1 (year YEAR(4), month INT(2) UNSIGNED ZEROFILL,              day INT(2) UNSIGNED ZEROFILL);   -- 插入测试数据 INSERT INTO t1 VALU…
(1)mysql replace 函数 语法:replace(object,search,replace) 意思:把object中出现search的全部替换为replace 案例:update `news` set `content`=replace(`content`,' ','');//清除news表中content字段中的空格 (2)mysql trim 函数 完整格式:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)简化格式:TR…
一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2015-01-22 22:20:46 | +---------------------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_…
From: http://www.cnblogs.com/redfox241/archive/2009/07/23/1529092.html 一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+| now()               |+---------------------+| 2008-08-08 22:20:46 |+----------…
在Oracle 中我们知道有一个 Hierarchical Queries 通过CONNECT BY 我们可以方便的查了所有当前节点下的所有子节点.但很遗憾,在MySQL的目前版本中还没有对应的功能. 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度是4, 那么所有节点为根的树的深度均不会超过4,则我们可以直接通过left join 来实现. 但很多时候我们无法控制树的深度.这时就需要在MySQL中用存储过程来实现或在你的程序中来实现这个递归.本文讨论一下几种实现的方法.…
MySQL Date 函数 下面的表格列出了 MySQL 中最重要的内建日期函数: 函数 描述 NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 DATE() 提取日期或日期/时间表达式的日期部分 EXTRACT() 返回日期/时间按的单独部分 DATE_ADD() 给日期添加指定的时间间隔 DATE_SUB() 从日期减去指定的时间间隔 DATEDIFF() 返回两个日期之间的天数 DATE_FORMAT() 用不同的格式显示日期/时间…
原来一直使用id与 parent_id结合的办法设计树,最近发现有些问题: 1.查询此结点下所有子结点的需求. 2.查询此结点上所有父结点的需求. 这些需求在oracle和sql server中可以使用一些办法在数据库端进行处理,但在mysql中处理就稍显麻烦,在sqlite中基本无解.所以想办法重新设计一下就显的很有必要的了. 添加两列:structure_node varchar(128)和 level int(11) root 001 第一级第一个结点 001 001 第一级第二个结点 0…
这里主要介绍mysql丰富的内置函数. 数学函数 数学函数相对比较简单,就是涉及一些数值的计算,这里列出数学函数的功能,仅个别给出实例. 函数 作 用 ABX(x) 返回x的绝对值 CEIL(X),CEILING(x) 返回大于或等于x的最小整数 FLOOR(X) 返回小于或等于x的最大整数 RAND() 返回0~1的随机数 RAND(X) 返回0~1的随机数,x值相同时,返回的随机数相同 SIGN(x) 返回x的符号,负数,0,正数对应的符号分为-1,0,1 PI() 返回圆周率 TRUNCA…
MySQL中的field()函数,可以用来对SQL中查询结果集进行指定顺序排序. 函数使用格式如下: order by (str,str1,str2,str3,str4……),str与str1,str2,str3,str4比较,其中str指的是字段名字, 意为:字段str按照字符串str1,str2,str3,str4的顺序返回查询到的结果集.如果表中str字段值不存在于str1,str2,str3,str4中的记录,放在结果集最前面返回. 例: 表数据如下: root@localhost|ir…
博主原创,转载请注明出处: 在mysql中if()函数的用法类似于java中的三目表达式,其用处也比较多,具体语法如下: IF(expr1,expr2,expr3),如果expr1的值为true,则返回expr2的值,如果expr1的值为false, 则返回expr3的值. 其经常判断查询出来的值,示例: mysql> ,'女','男') as sex from student; +-------+-----+ | name | sex | +-------+-----+ | name1 | 女…
一.对待存储过程和函数的态度 在实际项目中应该尽量少用存储过程和函数,理由如下: 1.移植性差,在MySQL中的存储过程移植到sqlsever上就不一定可以用了. 2.调试麻烦,在db中报一个错误和在应用层报一个错误不是一个概念,那将是毁灭性打击,直接一个error:1045什么的更本毫无头绪. 3.扩展性不高. 所以在互联网时代大型项目应该尽量少使用(不使用)存储过程和函数. 二.创建存储过程 2.1什么是存储过程? 存储过程和存储函数都是一组sql语句的集合.这些语句集合被当做一个整体存入数…
存储过程和函数 简单的说,存储过程就是一条或者多条SQL语句的集合.可以视为批文件,但是其作用不仅仅局限于批处理.本文主要介绍如何创建存储过程和存储函数,以及如何调用.查看.修改.删除存储过程和存储函数等. 创建存储过程和函数 存储程序分为存储过程和存储函数.Mysql创建存储过程和存储函数的语句分别为CREATE PROCEDURE和CREATE FUNCTION.使用CALL语句来调用存储过程,只能用输出变量返回值.存储函数可以从语句外调用(通过引用函数名),也能返回标量值.存储过程也可以调…
一.mysql中的GROUP BY和HAVINGGROUP BY常见的是和聚合函数(SUM,MIN,MAX,COUNT)搭配使用. 比如:SELECT category,SUM(money) AS `total` FROM user_money GROUP BY category;按类别分组统计user_money表每个类别总计有多少money 现在如果增加个条件,需要统计每个类别中支出的money总量,比如rule=1为支出,则改写语句为SELECT category,SUM(money) A…
一.对待存储过程和函数的态度 优点: 1.存储过程只在创建时进行编译,sql语句则每次执行都需要编译.能提高数据库执行速度. 2.简单复杂操作结合事物一起封装. 3.复用性高. 4.安全性高,可指定存储过程的使用权. 在实际项目中应该尽量少用存储过程和函数,理由如下: 1.移植性差,在MySQL中的存储过程移植到sqlsever上就不一定可以用了. 2.调试麻烦,在db中报一个错误和在应用层报一个错误不是一个概念,那将是毁灭性打击,直接一个error:1045什么的更本毫无头绪. 3.扩展性不高…
最近使用mysql开发一个项目,发现没有像之前在用oracle数据中那样有to_date方法.mysql中实现日期格式化的方法为date_to_str('日期字符串','日期格式'),而且mysql中的日期格式的写法和oracle也不同. mysql中用法为:str_to_date('2012-05-01 23:59:59','%Y-%m-%d %T') %Y:代表4位的年份 %y:代表2为的年份 %m:代表月, 格式为(01……12)  %c:代表月, 格式为(1……12) %d:代表月份中的…
1)         不同应用中B+树索引的使用 对于OLTP应用,由于数据量获取可能是其中一小部分,建立B+树索引是有异议时的 对OLAP应用,情况比较复杂,因为索引的添加应该是宏观的而不是微观的. 2)         联合索引 对表上多个列进行索引.联合索引的创建方法与多个索引创建的方法一样.不同之处在于有多个索引页 CREATE TABLE t( a INT, b INT, PRIMARY KEY(a), KEY idx_a_b(a,b) )ENGINE=INNODB 从本质上来说,联合…
MySQL空间扩展不仅提供了空间数据的存储能力,而且还具备一些空间运算能力,这些功能通过MySQL内建的几何函数实现.最简单的几何函数昨天已经有所涉及,也就是转换WTK的GEOMFROMTEXT和ASTEXT.除此以外,不同的几何对象还具有不同的功能函数. 几何类的函数DIMENSION,返回对象的尺寸,-1为空,0为点(没有长度没有面积),1为线(有长度而没有面积),2为多边形(有面积):ENVELOPE,返回最小边界矩形:GEOMERYTYPE,返回几何类型(字符串)SRID,所谓SRID是…
1.查询时需要转换类型,大多发生在数字和字符串.时间和字符串之间 Mysql提供了两个个类型转换函数:CAST和CONVERT CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值. 这个类型 可以是以下值其中的 一个: BINARY[(N)] CHAR[(N)] DATE DATETIME DECIMAL SIGNED [INTEGER] TIME UNSIGNED [INTEGER] 例如: SELECT DISTINCT ctd.userId FROM ca…
写在分割线之前,个人以为,数据库应该具备简单的的数据加工能力.如同食品在吃之前,是要经过很多到工序的,有经过初加工.粗加工.精加工.深加工等.那么mysql也应该并必须担任起数据初加工以及粗加工的责任.不能让所有数据处理的工作都交给PHP去做.这样不仅使程序冗余而且效率底下. 可能有的朋友会担心mysql的性能不行,数据处理的任务分隔到mysql上会使mysql的压力增大.私以为这是不足担心的,mysql虽然性能不高,但足以支持中小规模的公司使用. 1.char_length(str); 2.c…
在MySQL应用时,经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD. 一,TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2). 说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差.其结果的单位由interval 参数给出.该参数必须是以下值的其中一个: FRAC_SECOND.表示间隔是毫秒 SECOND.秒 MINU…
DAYOFWEEK(date)返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六).这些索引值对应于ODBC标准.mysql> select DAYOFWEEK('1998-02-03');-> 3 DAYOFMONTH(date)返回date的月份中日期,在1到31范围内.mysql> select DAYOFMONTH('1998-02-03');-> 3 DAYOFYEAR(date)返回date在一年中的日数, 在1到366范围内.mysql> se…
一.字符串函数 select concat(name,"age is",age) from users;  insert(str,x,y,insert)//将字符串x位置开始y个位置替换成insert select  lower(str) upper(str)//转化大小写 select * from user where upper(name)='AAA'; left (str ,x) right(str,x)//分别返回左边和右边的x个字符 select left ("a…
MySQL里面的length函数是一个用来获取字符串长度的内置函数,一个汉字是算三个字符,中文的标点符号也是算三个字符,一个数字或字母算一个字符.具体用法示例如下: 1.查看某字符串的长度 SELECT LENGTH('www.baidu.com') FROM DUAL; MySQL文档中对于dual表的解释:You are allowed to specify DUAL as a dummy table name in situations where no tables are refere…
1. 常见数据库注入函数: MYSQL: and length((user))>10 ACCESS: and (select count() from MSysAccessObject)>0 MSSQL: and (select count()from sysobjects)>0 ORDER BY句子: select id,username,password from users where id = 1 order by 1,2,3,4依次测试,从而判断有几列存在,得知列数,拿unio…
一  FIND_IN_SET() SELECT * from u_user where FIND_IN_SET('32',tags) 上面的sql是精确查找,查找表中tags中含有32的记录(注意这里的含有不是说13268这样也是含有,而是23,32,35,36这样才是含有),只有当tags这一列中记录是用逗号分开中的tags含有32.不能够说查找("32,33",tags)这种写法是查不到上面的结果,例如 这样的字段:  9791, 2336, 726, 728, 1466, 684…
MySQL中有5个函数需要计算当前时间的值: NOW.返回时间,格式如:2012-09-23 06:48:28 CURDATE,返回时间的日期,格式如:2012-09-23 CURTIME,返回时间,格式如:06:48:28 UNIX_TIMESTAMP,返回时间整数戳,如:1348408108 SYSDATE,返回时间,格式和time()函数返回时间一样,但是有区别. 除了本身定义所返回的区别以外,另一个区别是:前四个函数都是返回基于语句的开始执行时间,而SYSDATE返回time的值. 通过…
locate函数使用 LOCATE(substr,str) 1.如果子串 substr 在 str 中不存在,返回值为 0: 2.如果子串 substr 在 str 中存在,返回该字符串第一次出现的位置; LOCATE(substr,str,pos) 1.在str中查询substr,从第开始进行pos查询,存在返回出现第一次出现的位置,不存在返回0 substring函数使用 字符串截取:substring(str, pos) 1.从str中进行第pos分割,然后输出分割后面的内容 substr…
今天写代码时前台传过来类似‘1,2,3,4,5,6’的字符串,这种情况直接用IN是无效的,需要把字符串分割成数组或者组装成列表,然后再利用mabatis的foreach函数 <select id = "queryXXX",resultType = "XXX", paramterType = "java.lang.HashMap">SELECT * FROM fast_input f where id in<foreach ite…
之前小编在工作中遇到一些处理数据的问题,例如完成日期格式化,获取几天后的时间,生成指定格式的编码等问题,这时候小编经常会写一大堆逻辑代码来进行处理,还自己感觉自己很流弊的样子,后来却发现同事遇到相同的问题并没有写一大堆逻辑代码,好奇心下促使我偷偷的看了下同事的代码,才明白他们很喜欢使用sql中的函数直接处理了,大大减少了代码量,于是小编决定加强这方面的知识,多积累多看,把比较实用的一些sql函数列举出来,望指点一下. NO1: datediff函数 datediff函数返回两个日期之间的天数 语…