当前位置:首页 » 编程语言 » oraclesql语句格式化
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

oraclesql语句格式化

发布时间: 2022-09-12 06:01:41

⑴ oracle sql语句的写法 一张表student,2个字段,年级grade和学号stuID

create or replace function get_IDlist(f_grade in varchar2)
return varchar2
is
v_pre varchar2(20) default null;
v_list varchar(4000) default null;
v_templist varchar(4000) default null;
v_templist1 varchar(4000) default null;
begin
for x in ( select to_number(t.stuid) stuid,t.gradeid from ljtest t where t.gradeid =f_grade order by to_number(t.stuid)) loop
if v_pre is null then
v_list:=to_char(x.stuID);
else
if x.stuID-v_pre=1 then
--判断三个以上连续的
--select (length('aaa-bb-ccc') - length(replace('aaa-bb-ccc', '-'))) / length('aaa-bb-ccc') from al;
select substr(v_list,instr(v_list,',','-1')+1,length(v_list)) into v_templist from al;
select substr(v_list,1,instr(v_list,',','-1')) into v_templist1 from al;
if(instr(v_templist,'-')>0) then
v_list:=v_templist1||substr(v_templist,1,instr(v_templist,'-'))||'-'||to_char(x.stuID);
else
v_list:=v_templist1||v_templist||'-'||to_char(x.stuID);
end if;
else
v_list:=v_list||','||to_char(x.stuID);
end if;
end if;
v_pre:= x.stuID;
end loop;
return v_list;
end;

⑵ oracle 数据查询sql语句。

e name: tab
SELECT field1, field2, field3... fieldn
FROM (SELECT field1, field2, field3...fieldn, ROW_NUMBER() OVER(ORDER BY field1 DESC) AS RK ) FROM tab ) t
WHERE rk = 1

00904是说列名不正确,仔细看了下,AS RK后面多了一个括号,下面这样就可以了
SELECT field1, field2, field3... fieldn
FROM (SELECT field1, field2, field3...fieldn,
ROW_NUMBER() OVER(ORDER BY field1 DESC) AS RK
FROM tab
where field1=表名.字段名) t
WHERE rk = 1

我给你改一下吧,你写的那个效率很低的
SELECT t1.a, t1.b, t2.field1, t2.field2, t2.field3...t2.fieldn
FROM lkk t1,
(SELECT field1, field2, field3...fieldn,
ROW_NUMBER() OVER(ORDER BY field1 DESC) AS RK
FROM tab) t
WHERE t.field1 = t1.a
AND t.rk = 1

⑶ 在Oracle使用sql语句中如何插入日期格式的数据

1、输入服务器地址、数据库登录用户名、登录密码,完成数据库登录操作。

⑷ oracle SQL语句问题

最好按照后面的格式写
'yyyy-mm-dd HH24:MI:SS'

yyyy-mm-dd就不说了
关键是HH24代表的是24小时制,所以就不要什么上午,下午了
09:42:16 直接就是21:42:16
所以正确的语法应该是
select to_date('2011-05-03 21:42:16','yyyy-mm-dd HH24:MI:SS ') from al;

⑸ Oracle数据库sql语句

DML操作(insert , delete , update)之后,一定要使用commit或rollback命令来结束该事务,否则直接关闭SQL Plus,数据库默认rollback之前未提交的事务,所以今天你在select的时候 会显示未选定行。
而手动输入commit,rollback 这类的命令,是显示的提交事务(完成事务)。
如果在DML操作之后未及时显示的提交,而是又进行了DDL操作(create alter...),则数据库会隐式的提交之前未完成的事务。

所以 下次一定要注意哦~~

⑹ Oracle的SQL语句中如何处理‘&’符号

如下sql语句就不能正确运行:sql>
select
'a&b'
from
al;处理方法:用oracle的字符串处理函数chr处理。chr(38)表示
&符号如:select
chr(38)
from
al;结果:&sql>
select
'a'||chr(38)||'b'
from
al;结果:a&b其他不能处理的特殊符合,也用类似的方式处理。如果不知道该特殊符号的值,可以调用ascii函数处理如:select
ascii('&')
from
al;结果:38

⑺ oracle怎么设置

1,登录后默认自动选中My Objects
默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需要Wait几秒钟,而选择My Objects后响应速率则是以毫秒计算的。
Tools菜单 --> Object Brower Filters,会打开Brower Folders的定单窗口,把“My Objects”设为默认即可。
Tools菜单--> Object Brower Folders,中把你经常点的几个目录(比如:Tables Views Seq Functions Proceres)移得靠上一点,并加上颜色区分,这样你的平均寻表时间会大大缩短,试试看。
/*设置方法:Tools菜单--Brower Folders,会打开Brower Folders的定单窗口,把“My Objects”移到最顶端即可。
同理,可以把你经常点的几个目录(比如:tables Views Seq Functions Proceres)移得靠上一点,并加上颜色区分,这样你的平均寻表时间会大大缩短,试试看。*/

2,记住密码
这是个有争议的功能,因为记住密码会给带来数据安全的问题。
但假如是开发用的库,密码甚至可以和用户名相同,每次输入密码实在没什么意义,可以考虑让PLSQL Developer记住密码。
位置:Tools菜单--Preferences--Oracle--Logon HIstory--Store with password

3,双击即显示表数据
PLSQL Developer里鼠标双击表或者视图时的默认响应实在让我感到失望,因为我最关心的是表结构和数据,但是双击后这两件事情都没有发生,也许默认响应是高手们需要的,但对我来说查看数据和表结构是最主要的,其他的我不关心。
不过好的是这是可以设置的,你可以给鼠标双击和拖放绑定需要的事件,比如:双击编辑数据,拖放显示表结构,Yeah!
位置:Preferences--User Interface,在右侧,为不同的Object type绑定双击和拖放操作。

4,SQL语句字符全部大写
自认为这是个好习惯,信息系统的核心是数据库,系统出问题时最先要查的就是SQL语句,怎样在浩瀚的日志中快速找到那条SQL语句是件比较痛苦的事情。
SQL语句全部大写并不能彻底解决这一问题,但在一堆代码中间找一行全部大写的字符相对容易些,你的眼睛会感谢你。
设置位置在Editor里。同时我觉得等宽字符可以减少程序的出错率,所以我所有的工具清一色用Courier New,如果某个IDE不支持这个字体,我基本上会选择放弃。哈,偶系个满挑惕的家伙。

5,特殊Copy
在SQL Window里写好的SQL语句通常需要放到Java或者别的语言内,就需要转成字符串并上加上相应的连字符,这一个事不需要再重复做了,在写好的SQL上点右键,使用特殊Copy即OK!

6,自定义快捷键
PLSQL Developer里预留了很多键让用户自定义,这是件很Hight的事情。不像霸道的Word,基本上所有的键都已预定义了功能,修改起来很是头疼。
通常情况下,打开PLSQL Developer后,最经常干的事就是打开SQL Window和Command Window,就给这两个操作定义了快捷键,ALT+S和ALT+ C,这样拿鼠标点三下的事情只需要按一下键。

7,其他
快速清空表,TRUNCATE TABLE,右键里可以找到。
没搞清楚的两个功能:Analyze、VALID
7、SQL Window中根据光标位置自动选择语句
设置方法:Preferences --> Window Types --> SQL Window,将AutoSelect statement选中即可。注意,每条语句后面要加分号。

补充:

8、启动PLSQL Developer,window list菜单自动调出
需要两步设置,首先要保存桌面设置,然后勾上Window list选项,具体操作如下:
a、在菜单项的Tools下的Preference选项中的User Interface中选择Option,在右边对于的Autosave desktop中把前面的复选框勾选上。
b、在菜单项的Tools下的Window list选项勾上。

9、格式化SQL(format)
当大家拿到一段较长的SQL语句时,想快速查看其中的逻辑,可以放在这个工具里,进行格式化,语句的逻辑也就一目了然了

10、数据库自动检测连接情况
因为数据库每过一段时间不操作,就会自动断开,然后需要自己手动连接,因为网络原因,总会卡在那里。工具提供了检测连接的功能,可以自动连接。
具体设置在Tools-Preferences-Check connection,Check connection前面勾选即可。

⑻ oracle SQL语句,日期格式转换

TO_DATE格式(以时间:2007-11-02 13:45:25为例)

1、日期和字符转换函数用法(to_date,to_char)

select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') as nowTime from al; //日期转化为字符串

select to_char(sysdate,'yyyy') as nowYear from al; //获取时间的年

select to_char(sysdate,'mm') as nowMonth from al; //获取时间的月

select to_char(sysdate,'dd') as nowDay from al; //获取时间的日

select to_char(sysdate,'hh24') as nowHour from al; //获取时间的时

select to_char(sysdate,'mi') as nowMinute from al; //获取时间的分

select to_char(sysdate,'ss') as nowSecond from al; //获取时间的秒

2、字符串和时间互转

select to_date('2004-05-07 13:23:44','yyyy-mm-dd hh24:mi:ss') from al

select to_char( to_date(222,'J'),'Jsp') from al //显示Two Hundred Twenty-Two

(8)oraclesql语句格式化扩展阅读

date 转换为字符串:

to_char(日期,”转换格式” ) 即把给定的日期按照“转换格式”转换。

转换的格式:

表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年。

表示month的:mm 用2位数字表示月;mon 用简写形式 比如11月或者nov ;month 用全称 比如11月或者november。

表示day的:dd 表示当月第几天;ddd表示当年第几天;dy 当周第几天 简写 比如星期五或者fri;day当周第几天全写。比如星期五或者friday。

表示hour的:hh 2位数表示小时 12进制; hh24 2位数表示小时 24小时。

表示minute的:mi 2位数表示分钟。

表示second的:ss 2位数表示秒60进制。

⑼ 寻觅高手写Oracle SQL语句

这个一定能行:

select
name,
sum(case when state=1 then 1 else 0 end) "1",
sum(case when state=2 then 1 else 0 end) "2"
from 表名
group by name;

********************
补充:我写成这样只是为了方便看(这个符合程序开发的原则),如果非得弄成一行:
select name,sum(case when state=1 then 1 else 0 end) "1",sum(case when state=2 then 1 else 0 end) "2" from 表名 group by name;

实施log:
[TEST@ORA1] SQL>select * from test1;

N STATE
- ----------
A 1
A 1
A 2
B 1
B 2
B 2

6 rows selected.

[TEST@ORA1] SQL>select
2 name,
3 sum(case when state=1 then 1 else 0 end) "1",
4 sum(case when state=2 then 1 else 0 end) "2"
5 from test1
6 group by name;

NAME 1 2
---- ---------- ----------
A 2 1
B 1 2
********************

---
以上,希望对你有所帮助。