- 浏览: 624052 次
最新评论
-
luozhixiong:
oracle的常用函数 instr() 和substr()函数 -
yezuhui2008:
oracle的常用函数 instr() 和substr()函数 -
陶小宝:
oracle的常用函数 instr() 和substr()函数 -
曾老师:
绿屌侠 写道[flash=200,200][flash=200 ...
mysql 的 find_in_set函数使用方法 -
绿屌侠:
[flash=200,200][flash=200,200][ ...
mysql 的 find_in_set函数使用方法
文章列表
几个简单的mysql存储过程
- 博客分类:
- mysql
MySQL存储过程问题 以前没用过MySQL存储过程,第一次写有很多的不习惯,总结如下:
下面是一个最简单的MySQL存储过程,实现两个数相加
?delimiter $$
create procedure proc_add(in a int,in b int)
begin
declare c int;
if a is null then
set a = 0;
end if;
if b is null then
set b = 0;
end if;
set c = a + b;
se ...
mysql表连接的知识待补充
- 博客分类:
- mysql
等值连接又叫内链接 inner join 只返回两个表中连接字段相等的行
select * from A inner join B on A.id = B.id; #做法1
select * from A,B where A.id = B.id; #做法2
mysql的常用函数
- 博客分类:
- mysql
mysql的常用函数
abs(-1)#绝对值
pi()#pi值
sqrt(2)#平方根
mod(-5,3)#取余-2
ceil(10.6)#进位+1 结果11 ceil(10.0)结果10
floor(10.6)#取整 10
round(2.5)#四舍五入到整数 结果3
round(2.5,2)#保留两位小数 结果2.50
truncate(2.5234,3)#取小数后3位不四舍五入 2.523
sign(-2);#符号函数 返回-1 0还是0 正数返回1
pow(2,3),exp(2);#2的3次幂 或e的2次幂
log(2),log10(2);#求对数
radians(180),degre ...
#if语句
if 条件 then 语句
elseif 条件 then 语句
else 语句
end if
#case语句
case 条件
when 条件 then 语句
when 条件 then 语句
else 语句
end case
#loop语句
fn:loop
语句
end loop fn;
leave fn #退出循环
#while语句
fn:while 条件 do
语句
end while fn
#存储过程
#存储程序
delimiter #定义存储程序
create procedure getversion(out params varchar(20)) # params是传出参数 in传进 out传出 inout传回
begin
select version() into params; #版本信息赋值 params
end
call getversion(@a); #调用存储过程
select @a;
----------------------------------------------------------------
delimiter #定义一个存储函数
creat ...
select tbexamineegrade.*,
row_number() over(partition by userid,TpID order by exscore desc) lev
--------------------------------------------------
:查询员工的工资,按部门排序
select ename,sal,row_number() over (partition by deptno order by sal desc) as sal_order from scott.emp;
执行结果:
ENAME ...
select OrganLevelName,papername,
DATE_FORMAT(tp.DateCreated,'%Y-%m-%d %H:%i') as DateCreated,
tp.tpid,SavePaper,PaperSource,
CONCAT( DATE_FORMAT(ExamBegin,'%Y-%m-%d %H:%i'),
' - ', DATE_FORMAT(ExamEnd,'%Y-%m-%d %H:%i'))
AS Exam,
SelectedMode,UserAlias
...
Order By dbms_random.value ,为结果集的每一行计算一个随机数,dbms_random.value 是结果集的一个列(虽然这个列并不在select list 中),然后根据该列排序,得到的顺序自然就是随机的啦。
select user_id,user_name,dbms_random.value a from users
order by 3;
USER_ID USER_NAME A
---------- -------------------- -----------------------
7 Work 0.19171380001609610498
2 ...
ExercisePaperDAOImpl
// 查询训练记忆试题
public List findTTMemory(int userid, int ttid, int ttgid) {
String sql = "select * from tbTTrainMemory where userid=? and ttid=? and ttgid=? order by dbms_random.value";
Object[] args = { userid, ttid, ttgid };
return basedao.getJdbcTemplate().query ...
public int insertQuesGrade(QuesGrade quesGrade) {
/** oracle 的一般做法
int id = baseDAO.getJdbcTemplate().queryForInt("select SEQ_TBQUESGRADE.nextval from dual");
Object[] args = {id,quesGrade.getUserid(),quesGrade.getQid(),quesGrade.getWlgid()};
baseDAO.getJdbcTempla ...
select tree.*,
(select count(*) from treenodes where id<=tree.id) as rownum
from treenodes tree;
使用相关子查询 传递参数然后计算个数
转自ystyaoshengting的专栏
在查询数据库的时候,我们有时候需要对查询出来的数据加上序列,1,2,3,……n
例如:我们根据表的某个字段排序后,要对这些数据加上序列,这个时候序号常常不是我们建表时设置好的自增的主键id,怎么办呢????
可能我们会用变量来解决,如下
set @rownum=0;
SELECT @rownum:=@rownum+1 as rownum, table_name.*
FROM table_name
如果在数据库中要用一句SQL语句来实现,这又改怎么办呢????
oracle数据库有专门的rownum来解决伪序列问题,但是mysql却到 ...
where nvl(t.parentid,0)=0 and et.userid = 1 %1$s order by et.etid desc;
原来的oracle
select t.ttid,o.organname,
t.targettrain,
t.creator,
DateText(t.TTEnd) as DateRange, //这是自定义的函数
decode(tg.finishedMode, 1, '已达标', '未达标') as passmode,
decode(t.AllowView, 1, '允许', '不允许') as AllowView
from tbTarget ...
Oracle排序中NULL值处理的五种常用方法:
1、缺省Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前
2、使用nvl函数
nvl函数可以将输入参数为空时转换为一指定值,如
nvl(employee_name,’张三’)表示当employee_name为空时则返回’张三’,如果不为空则返回employee_name
通过这个函数可以定制null的排序位置。
3、使用decode函数
decode函数比nvl函数更强大,同样它也可以将输入参数为空时转换为一指定的值,如
decode(employee_name,n ...