本文转自http://blog.csdn.net/catoop/article/details/8124561 1、oracle函数 WMSYS.WM_CONCAT的使用 如图,将图1的结果变成图2的结果,使用函数 WMSYS.WM_CONCAT 即可。 查询语句需要配合使用group by select aa,wmsys.wm_concat(t1.name) from ( select t.
我们知道mysql中是不支持sequence的,一般是建表的时间使这个字段自增。
如
create table table_name(id int auto_increment primary key, ...);
或者alter table table_ame add id int auto_increment primary key
//字段,一定设置为primary key
或者重设自增字段的起步值 alter table table_name AUTO_INCREMENT=n 但是我们在oracle中经常使用sequence_name.nextval,或者在程序中我们使用先select sequence_name.value from dual.如果我们的开发框架要同时支持oracle和mysql。一般会把取sequence提出来。如果在mysql中提供一个类似的函数,这样提出来会比较方便些。这是一种使用的场景。下面就说说怎么在mysql中实现一个nextval函数吧。 1先建一表 CREATE TABLE `sys_sequence` (
`NAME` varchar(50) NOT NULL,
`CURRENT_VALUE` int(11) NOT NULL DEFAULT '0',
`INCREMENT` int(11) NOT NULL DEFAULT '1',
PRIMARY KEY (`NAME`)
)
2.然后建立函数 DELIMITER $$DROP FUNCTION IF EXISTS `currval`$$CR博客分类:
oracle Oracle MySQL PHP
http://www.5stardatabasesoftware.com/cn/mysqltooracle.php
收藏在这里了,防止哪天想用的时候万一他官网不能访问了
Convert Mysql to Oracle 最新版本:4.0 Convert Mysql to Oracle是一个免费的数据库转换工具,EATE DEFINER=`root`@`%` FUNCTION `currval`(seq_name VARCHAR(50)) RETURNS INT(11)BEGIN
DECLARE VALUE INTEGER;
SET VALUE=0;
SELECT current_value INTO VALUE
FROM sys_sequence
WHERE NAME=seq_name;
RETURN VALUE;
END$$ DELIMITER ;
CREATE DEFINER=`root`@`%` FUNCTION `nextval`(seq_name varchar(50)) RETURNS int(11) BEGIN
UPDATE sys_sequence
SET CURRENT_VALUE = CURRENT_VALUE + INCREMENT
where
name=seq_name;
return currval(seq_name);
END
CREATE DEFINER=`root`@`%` FUNCTION `setval`(seq_name varchar(50),value integer) RETURNS int(11) BEGIN
update sys_sequence
set current_value=value
where name=seq_name;
return currval(seq_name);
END
?
测试下 select nextval('name') ; 搞定。