1. 不显示表中重复的字段
select * from 表 group by 分组字段 having count(分组字段)=1
2. 时间查询
select*fromdepartment
wherecreated_time
betweento_date('2012/4/5','yyyy/mm/dd')
andto_date('2012/4/6','yyyy/mm/dd')
或者:
列名= to_date('2012-5-21 9:38:52', 'yyyy-mm-dd hh24:mi:ss')
3. 获取当前系统时间
selectCONVERT(varchar(50),getdate(),120)
格式:2012-06-01 14:30:12
selectCONVERT(varchar(50),getdate(),23)
格式:2012-06-01
SelectCONVERT(varchar(100),GETDATE(),101)
格式:05/16/2008
SelectCONVERT(varchar(100),GETDATE(),102)
格式:2008.05.16
SelectCONVERT(varchar(100),GETDATE(),103)
格式:16/05/2008
SelectCONVERT(varchar(100),GETDATE(),20)
格式:2012-06-01 14:36:40
SelectCONVERT(varchar(100),GETDATE(),24)
格式:14:37:48
SelectCONVERT(varchar(100),GETDATE(),8)
格式:14:39:28
4. 获取数据库表中为时间类型的数据与当前时间的时间差值
select datediff(s,voteTime,getdate()) from voter
(select datediff(时间类型,表字段,getdate()) from表名)
s代表秒,voteTime是数据表中类型为时间的字段,getdate()获取当前时间
时间类型可以为(年:yy 月:m 日:d 时:hour或hh 分:minute 秒:s)
5. 数据类型转换
例:将时间类型转换成int型
方法1:selectcast(createtimeasint)fromdbo.CaseHandle
方法2:selectconvert(int,createtime)fromdbo.CaseHandle
其中createtime为表中字段,dbo.CaseHandle为表名
6. Oracle截取字符串的函数
语法:substr(string,start_position,[length])
其中string:字符串值;start_position:截取字符串的初始位置,number型,start_position为负数时,表示从字符串右边开始数起;length:截取位数,number型;其中length为可选,如果length为空(即不填)则返回start_position后面的所有字符,意思就是从start_position开始,取出length个字符并返回取出的字符串。
示例:select substr(‘this is a test’,6,2) from dual返回的结果是“is”
7. 连接某列值
例:
CREATEFUNCTION[dbo].[F_Str_DepictStr](@idVARCHAR(32))
RETURNSvarchar(500)
AS
BEGIN
DECLARE@strvarchar(500)
SET@str=''
SELECT@str=@str+','+DepictStr
FROMCaseDescripition
WHERECaseId=@id
RETURNSTUFF(@str,1,1,'')
END
GO
运行:将相同ID的DepictStr连接在一起
SELECTCaseId,DepictStr=dbo.F_Str_ResultStr(CaseId)
FROMCaseDescripitionGROUPBYCaseId
8. 递归查询的用法
语法:select * from表名where条件1 start with条件2 connect by prior当前表字段=级联表字段
例:
selectd.device_name,c.company_namefromdevice d
leftjoincompany_info conc.pkid=d.company_id
whered.company_idin(selectpkidfromcompany_infostartwithpkid=5
connectbysuperior_company=priorpkid)