??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲图片欧美,日本一区二区三区播放,国产精品999999http://www.aygfsteel.com/luluyanglu/category/38270.htmlzh-cnWed, 23 Mar 2011 07:01:49 GMTWed, 23 Mar 2011 07:01:49 GMT60oracle 使用dblink和同义词q接q程数据库表http://www.aygfsteel.com/luluyanglu/archive/2011/03/22/346752.html大鱼大鱼Tue, 22 Mar 2011 06:44:00 GMThttp://www.aygfsteel.com/luluyanglu/archive/2011/03/22/346752.htmlhttp://www.aygfsteel.com/luluyanglu/comments/346752.htmlhttp://www.aygfsteel.com/luluyanglu/archive/2011/03/22/346752.html#Feedback0http://www.aygfsteel.com/luluyanglu/comments/commentRss/346752.htmlhttp://www.aygfsteel.com/luluyanglu/services/trackbacks/346752.html
首先建立数据库连接:(x)

  -- Drop existing database link
drop public database link DB4960;
-- Create database link
create public database link DB4960
  connect to ctile identified by ctile 
  using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.11.41.60)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ORCL)
)
)';


然后需要徏立同义词Q?br /> create public synonym mistel.table for mistel.table@DB4960;

然后可以在本地使用select  *  from mistel.table 查询DB4960上的数据库表?

大鱼 2011-03-22 14:44 发表评论
]]>
误删除了(jin)oracle表的数据,恢复Ҏ(gu)http://www.aygfsteel.com/luluyanglu/archive/2010/10/20/335723.html大鱼大鱼Wed, 20 Oct 2010 14:20:00 GMThttp://www.aygfsteel.com/luluyanglu/archive/2010/10/20/335723.htmlhttp://www.aygfsteel.com/luluyanglu/comments/335723.htmlhttp://www.aygfsteel.com/luluyanglu/archive/2010/10/20/335723.html#Feedback0http://www.aygfsteel.com/luluyanglu/comments/commentRss/335723.htmlhttp://www.aygfsteel.com/luluyanglu/services/trackbacks/335723.html
 SCNQ系l改变号Q,它的英文全拼为:(x)System Change Number Q它是数据库中非帔R要的一个数据结构?br />   SCN提供?jin)Oracle的内部时钟机Ӟ可被看作逻辑旉Q这对于恢复操作是至关重要的
  注释QOracle 仅根?SCN 执行恢复?br />   它定义了(jin)数据库在某个切时刻提交的版本。在事物提交Ӟ它被赋予一个唯一的标CZ物的SCN 。一些h认ؓ(f) SCN 是指Q?System Commit Number Q而通常 SCN 在提交时才变化,所以很多情况下Q?br />   q两个名词经常被交替使用?br />   I竟是哪个词其实Ҏ(gu)们来说ƈ不是最重要的,重要的是我们知道 SCN ?Oracle 内部的时钟机Ӟ Oracle 通过 SCN 来维护数据库的一致性,q过SCN 实施 Oracle 臛_重要的恢复机制?br />   具体执行程我们可从以下几个CZ图中体会(x);
  1.原表记录 $ sqlplus eygle/eygle
  SQL*Plus: Release 10.1.0.2.0 - Production on Wed Mar 30 08:52:04 2005
  Copyright (c) 1982, 2004, Oracle. All rights reserved.
  Connected to:
  Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
  With the Partitioning, OLAP and Data Mining options

  SQL>select count(*) from t1;
  COUNT(*)
  ----------
  9318
  2.误删除所有记?br />   q且提交更改?br />   SQL>delete from t1;
  9318 rows deleted.
  SQL>commit;
  Commit complete.
  SQL>select count(*) from t1;
  COUNT(*)
  ----------
  0
  3.获得当前SCN
  如果能够切知道删除之前SCN最好,如果不知道,可以q行闪回查询试.
  SQL>select dbms_flashback.get_system_change_number from dual;
  GET_SYSTEM_CHANGE_NUMBER
  ------------------------
  10671006
  SQL>select count(*) from t1 as of scn 10671000;
  COUNT(*)
  ----------
  0
  SQL>select count(*) from t1 as of scn 10670000;
  COUNT(*)
  ----------
  9318
  我们看到在SCN=10670000Ӟ数据都在?br />   4.恢复数据.
  SQL>insert into t1 select * from t1 as of scn 10670000;
  9318 rows created.
  SQL>commit;
  Commit complete.
  SQL>select count(*) from t1;
  COUNT(*)
  ----------
  9318
  文章2
  误删数据后的q原
  select timestamp_to_scn(to_timestamp('2009-03-13 09:00:00','YYYY-MM-DD HH:MI:SS')) from dual;
  l果:13526973
  删除时间{换ؓ(f)scn
  select * from reportinfo
  AS OF SCN 13526973

  reportinfo表中的scn点的数据取出
  然后可以Ҏ(gu)q个数据q行q原操作
  create table reporttest as select * from reportinfo where 1=0;
  insert into reporttest select * from reportinfo AS OF SCN 13526973;

  --上面两句应该可以合成一?br />   --create table reporttest as select * from reportinfo AS OF SCN 13526973;
  q是reporttest表中是scn点的reportinfo数据.处理卛_


大鱼 2010-10-20 22:20 发表评论
]]>
_֦SQL语句攉http://www.aygfsteel.com/luluyanglu/archive/2010/04/19/318724.html大鱼大鱼Mon, 19 Apr 2010 04:53:00 GMThttp://www.aygfsteel.com/luluyanglu/archive/2010/04/19/318724.htmlhttp://www.aygfsteel.com/luluyanglu/comments/318724.htmlhttp://www.aygfsteel.com/luluyanglu/archive/2010/04/19/318724.html#Feedback0http://www.aygfsteel.com/luluyanglu/comments/commentRss/318724.htmlhttp://www.aygfsteel.com/luluyanglu/services/trackbacks/318724.htmlSQL语句先前写的时候,很容易把一些特D的用法忘记Q我Ҏ(gu)整理?jin)一下SQL语句操作?/p>

一、基

1、说明:(x)创徏数据?/p>

CREATE DATABASE database-name

2、说明:(x)删除数据?/p>

drop database dbname

3、说明:(x)备䆾sql server

--- 创徏 备䆾数据?device

USE master

EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'

--- 开?备䆾

BACKUP DATABASE pubs TO testBack

4、说明:(x)创徏新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

Ҏ(gu)已有的表创徏新表Q?

AQcreate table tab_new like tab_old (使用旧表创徏新表)

BQcreate table tab_new as select col1,col2... from tab_old definition only

5、说明:(x)删除新表

drop table tabname

6、说明:(x)增加一个列

Alter table tabname add column col type

注:(x)列增加后不能删除。DB2中列加上后数据类型也不能改变Q唯一能改变的是增加varcharcd的长度?/p>

7、说明:(x)d主键Q?Alter table tabname add primary key(col)

说明Q删除主键:(x) Alter table tabname drop primary key(col)

8、说明:(x)创徏索引Qcreate [unique] index idxname on tabname(col....)

删除索引Qdrop index idxname

注:(x)索引是不可更改的Q想更改必须删除重新建?/p>

9、说明:(x)创徏视图Qcreate view viewname as select statement

删除视图Qdrop view viewname

10、说明:(x)几个单的基本的sql语句

选择Qselect * from table1 where 范围

插入Qinsert into table1(field1,field2) values(value1,value2)

删除Qdelete from table1 where 范围

更新Qupdate table1 set field1=value1 where 范围

查找Qselect * from table1 where field1 like '%value1%' ---like的语法很_֦Q查资料!

排序Qselect * from table1 order by field1,field2 [desc]

LQselect count as totalcount from table1

求和Qselect sum(field1) as sumvalue from table1

q_Qselect avg(field1) as avgvalue from table1

最大:(x)select max(field1) as maxvalue from table1

最:(x)select min(field1) as minvalue from table1

11、说明:(x)几个高查询q算?/p>

AQ?UNION q算W?

UNION q算W通过l合其他两个l果表(例如 TABLE1 ?TABLE2Qƈ消去表中M重复行而派生出一个结果表。当 ALL ?UNION 一起用时Q即 UNION ALLQ,不消除重复行。两U情况下Q派生表的每一行不是来?TABLE1 是来自 TABLE2?

BQ?EXCEPT q算W?

EXCEPT q算W通过包括所有在 TABLE1 中但不在 TABLE2 中的行ƈ消除所有重复行而派生出一个结果表。当 ALL ?EXCEPT 一起用时 (EXCEPT ALL)Q不消除重复行?

CQ?INTERSECT q算W?/p>

INTERSECT q算W通过只包?TABLE1 ?TABLE2 中都有的行ƈ消除所有重复行而派生出一个结果表。当 ALL ?INTERSECT 一起用时 (INTERSECT ALL)Q不消除重复行?

注:(x)使用q算词的几个查询l果行必L一致的?

12、说明:(x)使用外连?

A、left outer joinQ?

左外q接Q左q接Q:(x)l果集几包括q接表的匚w行,也包括左q接表的所有行?

SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

BQright outer join:

叛_q接(双?Q结果集既包括连接表的匹配连接行Q也包括双接表的所有行?

CQfull outer joinQ?

全外q接Q不仅包括符可接表的匹配行Q还包括两个q接表中的所有记录?/p>

二、提?/p>

1、说明:(x)复制?只复制结?源表名:(x)a 新表名:(x)b) (Access可用)

法一Qselect * into b from a where 1<>1

法二Qselect top 0 * into b from a

2、说明:(x)拯?拯数据,源表名:(x)a 目标表名Qb) (Access可用)

insert into b(a, b, c) select d,e,f from b;

3、说明:(x)跨数据库之间表的拯(具体数据使用l对路径) (Access可用)

insert into b(a, b, c) select d,e,f from b in '具体数据? where 条g

例子Q?.from b in '"&Server.MapPath(".")&"\data.mdb" &"' where..

4、说明:(x)子查?表名1Qa 表名2Qb)

select a,b,c from a where a IN (select d from b ) 或? select a,b,c from a where a IN (1,2,3)

5、说明:(x)昄文章、提交h和最后回复时?/p>

select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b

6、说明:(x)外连接查?表名1Qa 表名2Qb)

select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c

7、说明:(x)在线视图查询(表名1Qa )

select * from (SELECT a,b,c FROM a) T where t.a > 1;

8、说明:(x)between的用?between限制查询数据范围时包括了(jin)边界?not between不包?/p>

select * from table1 where time between time1 and time2

select a,b,c, from table1 where a not between 数? and 数?

9、说明:(x)in 的用方?/p>

select * from table1 where a [not] in ('?','?','?','?')

10、说明:(x)两张兌表,删除主表中已l在副表中没有的信息

delete from table1 where not exists ( select * from table2 where table1.field1=table2.field1 )

11、说明:(x)四表联查问题Q?/p>

select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where .....

12、说明:(x)日程安排提前五分钟提?

SQL: select * from 日程安排 where datediff('minute',f开始时?getdate())>5

13、说明:(x)一条sql 语句搞定数据库分?/p>

select top 10 b.* from (select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b where b.主键字段 = a.主键字段 order by a.排序字段

14、说明:(x)?0条记?/p>

select top 10 * form table1 where 范围

15、说明:(x)选择在每一lb值相同的数据中对应的a最大的记录的所有信?cMq样的用法可以用于论坛每月排行榜,每月热销产品分析,按科目成l排?{等.)

select a,b,c from tablename ta where a=(select max(a) from tablename tb where tb.b=ta.b)

16、说明:(x)包括所有在 TableA 中但不在 TableB和TableC 中的行ƈ消除所有重复行而派生出一个结果表

(select a from tableA ) except (select a from tableB) except (select a from tableC)

17、说明:(x)随机取出10条数?/p>

select top 10 * from tablename order by newid()

18、说明:(x)随机选择记录

select newid()

19、说明:(x)删除重复记录

Delete from tablename where id not in (select max(id) from tablename group by col1,col2,...)

20、说明:(x)列出数据库里所有的表名

select name from sysobjects where type='U'

21、说明:(x)列出表里的所有的

select name from syscolumns where id=object_id('TableName')

22、说明:(x)列示type、vender、pcs字段Q以type字段排列Qcase可以方便地实现多重选择Q类似select 中的case?/p>

select type,sum(case vender when 'A' then pcs else 0 end),sum(case vender when 'C' then pcs else 0 end),sum(case vender when 'B' then pcs else 0 end) FROM tablename group by type

昄l果Q?/p>

type vender pcs

?sh)?A 1

?sh)?A 1

光盘 B 2

光盘 A 2

手机 B 3

手机 C 3

23、说明:(x)初始化表table1

TRUNCATE TABLE table1

24、说明:(x)选择?0?5的记?/p>

select top 5 * from (select top 15 * from table order by id asc) table_别名 order by id desc

三、技?/p>

1?=1Q?=2的用,在SQL语句l合时用的较?/p>

"where 1=1" 是表C选择全部   "where 1=2"全部不选,

如:(x)

if @strWhere !=''

begin

set @strSQL = 'select count(*) as Total from [' + @tblName + '] where ' + @strWhere

end

else

begin

set @strSQL = 'select count(*) as Total from [' + @tblName + ']'

end

我们可以直接写成

set @strSQL = 'select count(*) as Total from [' + @tblName + '] where 1=1 安定 '+ @strWhere

2、收~数据库

--重徏索引

DBCC REINDEX

DBCC INDEXDEFRAG

--收羃数据和日?/p>

DBCC SHRINKDB

DBCC SHRINKFILE

3、压~数据库

dbcc shrinkdatabase(dbname)

4、{UL据库l新用户以已存在用户权限

exec sp_change_users_login 'update_one','newname','oldname'

go

5、检查备份集

RESTORE VERIFYONLY from disk='E:\dvbbs.bak'

6、修复数据库

ALTER DATABASE [dvbbs] SET SINGLE_USER

GO

DBCC CHECKDB('dvbbs',repair_allow_data_loss) WITH TABLOCK

GO

ALTER DATABASE [dvbbs] SET MULTI_USER

GO

7、日志清?/p>

SET NOCOUNT ON

DECLARE @LogicalFileName sysname,

        @MaxMinutes INT,

        @NewSize INT

 

USE     tablename             -- 要操作的数据库名

SELECT  @LogicalFileName = 'tablename_log',  -- 日志文g?/p>

@MaxMinutes = 10,               -- Limit on time allowed to wrap log.

        @NewSize = 1                  -- 你想讑֮的日志文件的大小(M)

-- Setup / initialize

DECLARE @OriginalSize int

SELECT @OriginalSize = size

  FROM sysfiles

  WHERE name = @LogicalFileName

SELECT 'Original Size of ' + db_name() + ' LOG is ' +

        CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' +

        CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'

  FROM sysfiles

  WHERE name = @LogicalFileName

CREATE TABLE DummyTrans

  (DummyColumn char (8000) not null)

 

DECLARE @Counter   INT,

        @StartTime DATETIME,

        @TruncLog  VARCHAR(255)

SELECT  @StartTime = GETDATE(),

        @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'

DBCC SHRINKFILE (@LogicalFileName, @NewSize)

EXEC (@TruncLog)

-- Wrap the log if necessary.

WHILE     @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired

      AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName) 

      AND (@OriginalSize * 8 /1024) > @NewSize 

  BEGIN -- Outer loop.

    SELECT @Counter = 0

    WHILE  ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))

      BEGIN -- update

        INSERT DummyTrans VALUES ('Fill Log') 

        DELETE DummyTrans

        SELECT @Counter = @Counter + 1

      END  

    EXEC (@TruncLog) 

  END  

SELECT 'Final Size of ' + db_name() + ' LOG is ' +

        CONVERT(VARCHAR(30),size) + ' 8K pages or ' +

        CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'

  FROM sysfiles

  WHERE name = @LogicalFileName

DROP TABLE DummyTrans

SET NOCOUNT OFF

8、说明:(x)更改某个?/p>

exec sp_changeobjectowner 'tablename','dbo'

9、存储更改全部表

CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch

 @OldOwner as NVARCHAR(128),

 @NewOwner as NVARCHAR(128)

AS

DECLARE @Name   as NVARCHAR(128)

DECLARE @Owner  as NVARCHAR(128)

DECLARE @OwnerName  as NVARCHAR(128)

DECLARE curObject CURSOR FOR

 select 'Name'   = name,

  'Owner'   = user_name(uid)

 from sysobjects

 where user_name(uid)=@OldOwner

 order by name

OPEN  curObject

FETCH NEXT FROM curObject INTO @Name, @Owner

WHILE(@@FETCH_STATUS=0)

BEGIN    

 if @Owner=@OldOwner

 begin

  set @OwnerName = @OldOwner + '.' + rtrim(@Name)

  exec sp_changeobjectowner @OwnerName, @NewOwner

 end

-- select @name,@NewOwner,@OldOwner

 FETCH NEXT FROM curObject INTO @Name, @Owner

END

close curObject

deallocate curObject

GO

 

10、SQL SERVER中直接@环写入数?/p>

declare @i int

set @i=1

while @i<30

begin

   insert into test (userid) values(@i)

   set @i=@i+1

end

记存储q程中经常用到的本周Q本月,本年函数

Dateadd(wk,datediff(wk,0,getdate()),-1)

Dateadd(wk,datediff(wk,0,getdate()),6)

Dateadd(mm,datediff(mm,0,getdate()),0)

Dateadd(ms,-3,dateadd(mm,datediff(m,0,getdate())+1,0))

Dateadd(yy,datediff(yy,0,getdate()),0)

Dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

上面的SQL代码只是一个时间段

Dateadd(wk,datediff(wk,0,getdate()),-1)

Dateadd(wk,datediff(wk,0,getdate()),6)

是表示本周旉D?

下面的SQL的条仉?是查询旉D在本周范围内的:

Where Time BETWEEN Dateadd(wk,datediff(wk,0,getdate()),-1) AND Dateadd(wk,datediff(wk,0,getdate()),6)

而在存储q程?

select @begintime = Dateadd(wk,datediff(wk,0,getdate()),-1)

select @endtime = Dateadd(wk,datediff(wk,0,getdate()),6)

 

本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/surfingsoft_mda/archive/2009/11/15/4812371.aspx

本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/surfingsoft_mda/archive/2009/11/15/4812371.aspx



大鱼 2010-04-19 12:53 发表评论
]]>
常用sql语句索引在线更新分区扩展信息删除重复?/title><link>http://www.aygfsteel.com/luluyanglu/archive/2009/03/13/259646.html</link><dc:creator>大鱼</dc:creator><author>大鱼</author><pubDate>Fri, 13 Mar 2009 15:07:00 GMT</pubDate><guid>http://www.aygfsteel.com/luluyanglu/archive/2009/03/13/259646.html</guid><wfw:comment>http://www.aygfsteel.com/luluyanglu/comments/259646.html</wfw:comment><comments>http://www.aygfsteel.com/luluyanglu/archive/2009/03/13/259646.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/luluyanglu/comments/commentRss/259646.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/luluyanglu/services/trackbacks/259646.html</trackback:ping><description><![CDATA[<p>常用sql语句索引在线更新分区扩展信息删除重复?br /> 1:索引在线更新Q?br /> ALTER INDEX owner.tablename REBUILD ONLINE Q?<br /> 不能用带表空间信息。如QThis one works fine within PL/SQL:<br /> ALTER INDEX LISADMIN.Isample REBUILD TABLESPACE INDX<br /> ALTER INDEX LISADMIN.Isample REBUILD ONLINE TABLESPACE INDX</p> <p>2:删除重复行,保留最大值的行信息:(x)<br /> delete from 'table'<br /> where (a,b,c) not in (select a,b,max(c) from 'table' group by a,b);</p> <p>3Q分区参C息的更新<br /> CREATE TABLE WDZW1 ( <br /> WDBH NUMBER (10) NOT NULL, <br /> WDZW CLOB)<br /> TABLESPACE TESTSPACE PCTFREE 5 PCTUSED 90 INITRANS 1 MAXTRANS 255<br /> STORAGE ( INITIAL 512 NEXT 512 )<br /> PARTITION BY RANGE (WDBH)<br /> (<br /> PARTITION WDZW11 VALUES LESS THAN (100000)<br /> PCTFREE 5 PCTUSED 90 INITRANS 1 MAXTRANS 255<br /> STORAGE ( INITIAL 512k NEXT 512k PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 999),<br /> PARTITION WDZW21 VALUES LESS THAN (200000)<br /> PCTFREE 5 PCTUSED 90 INITRANS 1 MAXTRANS 255<br /> STORAGE ( INITIAL 512k NEXT 512k PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 999Q?br /> Q;<br /> CREATE UNIQUE INDEX PK_WDZW ON <br /> WDZW1(WDBH) <br /> TABLESPACE TESTSPACE PCTFREE 10 STORAGE(INITIAL 512 NEXT 512 PCTINCREASE 0 ) Q?br /> 查看分区扩展信息Q?/p> <p>SQL> select INITIAL_EXTENT, NEXT_EXTENT ,MIN_EXTENTS ,MAX_EXTENTS from dba_segments <br /> 2 where segment_type = 'LOB PARTITION';</p> <p>INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS<br /> -------------- ----------- ----------- -----------<br /> 20480 20480 1 249<br /> 20480 20480 1 249</p> <p>修改扩展分区Q?br /> alter table wdzw1 modify lob(wdzw) (storage (MAXEXTENTS unlimited))</p> <p>修改后结果信息:(x)</p> <p>SQL> select INITIAL_EXTENT, NEXT_EXTENT ,MIN_EXTENTS ,MAX_EXTENTS from dba_segments <br /> 2 where segment_type = 'LOB PARTITION';</p> <p>INITIAL_EXTENT NEXT_EXTENT MIN_EXTENTS MAX_EXTENTS<br /> -------------- ----------- ----------- -----------<br /> 20480 20480 1 2147483645<br /> 20480 20480 1 2147483645</p> <p><br />  </p> <img src ="http://www.aygfsteel.com/luluyanglu/aggbug/259646.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/luluyanglu/" target="_blank">大鱼</a> 2009-03-13 23:07 <a href="http://www.aygfsteel.com/luluyanglu/archive/2009/03/13/259646.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLServer和Oraclehttp://www.aygfsteel.com/luluyanglu/archive/2009/03/13/259645.html大鱼大鱼Fri, 13 Mar 2009 15:04:00 GMThttp://www.aygfsteel.com/luluyanglu/archive/2009/03/13/259645.htmlhttp://www.aygfsteel.com/luluyanglu/comments/259645.htmlhttp://www.aygfsteel.com/luluyanglu/archive/2009/03/13/259645.html#Feedback0http://www.aygfsteel.com/luluyanglu/comments/commentRss/259645.htmlhttp://www.aygfsteel.com/luluyanglu/services/trackbacks/259645.html SQLServer和Oracle是大家经常用到的数据库,在此感谢作者ȝ?gu)些常用函C供大家参考?

数学函数
  1.l对?
  S:select abs(-1) value
  O:select abs(-1) value from dual

  2.取整(?
  S:select ceiling(-1.001) value
  O:select ceil(-1.001) value from dual

  3.取整Q小Q?
  S:select floor(-1.001) value
  O:select floor(-1.001) value from dual

  4.取整Q截取)(j)
  S:select cast(-1.002 as int) value
  O:select trunc(-1.002) value from dual

  5.四舍五入
  S:select round(1.23456,4) value 1.23460
  O:select round(1.23456,4) value from dual 1.2346

  6.e为底的幂
  S:select Exp(1) value 2.7182818284590451
  O:select Exp(1) value from dual 2.71828182

  7.取e为底的对?
  S:select log(2.7182818284590451) value 1
  O:select ln(2.7182818284590451) value from dual; 1

  8.?0为底Ҏ(gu)
  S:select log10(10) value 1
  O:select log(10,10) value from dual; 1

  9.取^?
  S:select SQUARE(4) value 16
  O:select power(4,2) value from dual 16

  10.取^Ҏ(gu)
  S:select SQRT(4) value 2
  O:select SQRT(4) value from dual 2

  11.求Q意数为底的幂
  S:select power(3,4) value 81
  O:select power(3,4) value from dual 81

  12.取随机数
  S:select rand() value
  O:select sys.dbms_random.value(0,1) value from dual;

  13.取符?
  S:select sign(-8) value -1
  O:select sign(-8) value from dual -1

  14.圆周?
  S:SELECT PI() value 3.1415926535897931
  O:不知?

  15.sin,cos,tan 参数都以弧度为单?
  例如Qselect sin(PI()/2) value 得到1QSQLServerQ?

  16.Asin,Acos,Atan,Atan2 q回弧度

  17.弧度角度互换(SQLServerQOracle不知?
  DEGREESQ弧?〉角?
  RADIANSQ角?〉弧?

数值间比较

  18. 求集合最大?
  S:select max(value) value from
  (select 1 value
  union
  select -2 value
  union
  select 4 value
  union
  select 3 value)a

  O:select greatest(1,-2,4,3) value from dual

  19. 求集合最?
  S:select min(value) value from
  (select 1 value
  union
  select -2 value
  union
  select 4 value
  union
  select 3 value)a

  O:select least(1,-2,4,3) value from dual

  20.如何处理null?F2中的null?0代替)
  S:select F1,IsNull(F2,10) value from Tbl
  O:select F1,nvl(F2,10) value from Tbl

  21.求字W序?
  S:select ascii('a') value
  O:select ascii('a') value from dual

  22.从序h字符
  S:select char(97) value
  O:select chr(97) value from dual

  23.q接
  S:select '11'+'22'+'33' value
  O:select CONCAT('11','22')  33 value from dual

23.子串位置 --q回3
  S:select CHARINDEX('s','sdsq',2) value
  O:select INSTR('sdsq','s',2) value from dual

  23.模糊子串的位|?--q回2,参数L中间%则返?
  S:select patindex('%d%q%','sdsfasdqe') value
  O:oracle没发玎ͼ但是instr可以通过W四个参数控制出现次?
  select INSTR('sdsfasdqe','sd',1,2) value from dual q回6

  24.求子?
  S:select substring('abcd',2,2) value
  O:select substr('abcd',2,2) value from dual

  25.子串代替 q回aijklmnef
  S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value
  O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual

  26.子串全部替换
  S:没发?
  O:select Translate('fasdbfasegas','fa','? ) value from dual

  27.长度
  S:len,datalength
  O:length

  28.大小写{?lower,upper

  29.单词首字母大?
  S:没发?
  O:select INITCAP('abcd dsaf df') value from dual

  30.左补I格QLPAD的第一个参Cؓ(f)I格则同space函数Q?
  S:select space(10)+'abcd' value
  O:select LPAD('abcd',14) value from dual

  31.双I格QRPAD的第一个参Cؓ(f)I格则同space函数Q?
  S:select 'abcd'+space(10) value
  O:select RPAD('abcd',14) value from dual

  32.删除I格
  S:ltrim,rtrim
  O:ltrim,rtrim,trim

  33. 重复字符?
  S:select REPLICATE('abcd',2) value
  O:没发?

  34.发音怼性比?q两个单词返回gP发音相同)
  S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')
  O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual
  SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差
  q回0-4Q?为同韻I1最?

日期函数
  35.pȝ旉
  S:select getdate() value
  O:select sysdate value from dual

  36.前后几日
  直接与整数相加减

  37.求日?
  S:select convert(char(10),getdate(),20) value
  O:select trunc(sysdate) value from dual
  select to_char(sysdate,'yyyy-mm-dd') value from dual

  38.求时?
  S:select convert(char(8),getdate(),108) value
  O:select to_char(sysdate,'hh24:mm:ss') value from dual

39.取日期时间的其他部分
  S:DATEPART ?DATENAME 函数 Q第一个参数决定)(j)
  O:to_char函数 W二个参数决?

  参数---------------------------------下表需要补?
  year yy, yyyy
  quarter qq, q (季度)
  month mm, m (m O无效)
  dayofyear dy, y (O表星?
  day dd, d (d O无效)
  week wk, ww (wk O无效)
  weekday dw (O不清?
  Hour hh,hh12,hh24 (hh12,hh24 S无效)
  minute mi, n (n O无效)
  second ss, s (s O无效)
  millisecond ms (O无效)
  ----------------------------------------------

  40.当月最后一?
  S:不知?
  O:select LAST_DAY(sysdate) value from dual

  41.本星期的某一天(比如星期日)(j)
  S:不知?
  O:SELECT Next_day(sysdate,7) vaule FROM DUAL;

  42.字符串{旉
  S:可以直接转或者select cast('2004-09-08'as datetime) value
  O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;

  43.求两日期某一部分的差Q比如秒Q?
  S:select datediff(ss,getdate(),getdate()+12.3) value
  O:直接用两个日期相减(比如d1-d2=12.3Q?
  SELECT (d1-d2)*24*60*60 vaule FROM DUAL;

  44.Ҏ(gu)差值求新的日期Q比如分钟)(j)
  S:select dateadd(mi,8,getdate()) value
  O:SELECT sysdate+8/60/24 vaule FROM DUAL;

  45.求不同时区时?
  S:不知?
  O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;

  -----时区参数,北京在东8区应该是Ydt-------
  AST ADT 大西z标准时?
  BST BDT 白o(h)h准时?
  CST CDT 中部标准旉
  EST EDT 东部标准旉
  GMT 格林治标准旉
  HST HDT 阿拉斯加?夏威h准时?
  MST MDT 山区标准旉
  NST U芬兰标准时?
  PST PDT 太^z标准时?
  YST YDT YUKON标准旉

 



大鱼 2009-03-13 23:04 发表评论
]]>
oracle_sql 函数http://www.aygfsteel.com/luluyanglu/archive/2009/03/13/259643.html大鱼大鱼Fri, 13 Mar 2009 15:00:00 GMThttp://www.aygfsteel.com/luluyanglu/archive/2009/03/13/259643.htmlhttp://www.aygfsteel.com/luluyanglu/comments/259643.htmlhttp://www.aygfsteel.com/luluyanglu/archive/2009/03/13/259643.html#Feedback0http://www.aygfsteel.com/luluyanglu/comments/commentRss/259643.htmlhttp://www.aygfsteel.com/luluyanglu/services/trackbacks/259643.html oracle_sql 函数 
说明Q在括号中注明(数|(j)的ؓ(f)数值型函数Q注明ؓ(f)Q字W)(j)的ؓ(f)字符函数Q注明ؓ(f)日期的ؓ(f)日期型函敎ͼ注明为(转换Q的{换型函数Q注明是Q聚l)(j)的ؓ(f)聚组型函敎ͼ不注明的为其他函数?nbsp;
 
函数名:(x) 说明
abs(x)Q数|(j) q回x的绝对?
add_monthsQxQyQ(日期Q?q回gؓ(f)日期x加上y个月
asciiQxQ(字符Q?q回字符x的十q字表示
avg([distinct|all]x]Q聚l)(j) q回x列的q_?
ceilQxQ(字符Q?q回大于或等于x的最整?
chartorowidQxQ(转换Q?字W串x转换成rowidcd
chrQxQ(字符Q?q回对应于数x的字W集中的字符
concatQxQyQ(字符Q?q回串x和串y接结?
convertQxQy[,z]Q(日期Q?用字W集y来{换字W串xQz为原来的字符?
cosQxQ(数|(j) q回x的余?
coshQxQ(数|(j) q回x的双曲余?
countQ?|distinct|all]xQ(聚组Q?q回查询所得到的行?
dumpQw,[x[,y[,z]]]xQ?q回一个字W串Q含有w的数据类型码Q字节ؓ(f)单位的长度以?qing)内部表CŞ?
expQxQ(数|(j) q回e的xơ幂
floorQxQ(数|(j) q回于或等于x的最大整?
glb([distinct|all]x)Q聚l)(j) q回标签x的最大下?
greatestQx[,y],[,..]Q?q回列表中的最大?
greatest_lb(x[,y],[,…]) q回标签列表中的最大?
hextorawQxQ(字符Q?含?6q制数据的字W串转换成二q制数据
initcapQxQ(字符Q?q回串x首字W大写,其余字符写的结?
instrQw,x[,y[,z]]Q(字符Q?q回串x在串w中的出现位置
instrb(w,x[,y[,z]])Q字W)(j) 同上Q只在多字节字符时有?
last_dayQxQ(日期Q?q回x指定的那个月的最后一?
leastQx[,y][,…]Q?q回列表中的最?
least_ub(x[,y][,…]) q回标签列表中的最?
lengthQxQ(字符Q?q回串x的长?
lengthbQxQ(字符Q?q回串x的字节长?
lnQxQ(数|(j) q回x的自然对?
logQxQyQ(数|(j) q回x为底的y的对?
lowerQxQ(字符Q?q回串x写字母l果
lpadQxQy[,z]Q(字符Q?q回串x左边填充z至长度ؓ(f)y的结?
ltrimQx[,y]Q(字符Q?q回串x左边截去字符集ؓ(f)y后的l果
lubQ[distinct|all]xQ(聚组Q?q回标签x的最上?
max([distinct|all]x)Q聚l)(j) q回x列的最大列?
min([distinct|all]x)Q聚l)(j) q回x列的最列?
modQx,yQ(数|(j) q回x除以y的余?
months_betweenQx,yQ(日期Q?q回x和y之间的月?
new_timeQx,y,zQ(日期Q?q回旉区域y中的旉x在z区域的对应时?
next_dayQx,yQ(日期Q?q回日期x之后W一个名为y的那天的日期
nls_initcatQ字W)(j) 基本同initcapQ只是考虑到语a
nls_lover(x[,y])Q字W)(j) 基本同lowerQ只是考虑到语a
nls_upperQ字W)(j) 基本同upperQ只是考虑到语a
nvlQx,yQ?x为nullq回yQ否则返回x
powerQx,yQ(数|(j) q回x的yơ幂
rawtohexQxQ(转换Q?二q制数据转换?6q制数字的字W串
replace(x,y[,z])Q字W)(j) x中出现y的地Ҏ(gu)换成z
roundQx[,y]Q(数|(j) q回x四舍五入成y位小数的?
roundQx[,y]Q(字符Q?舍入到离日期x最q的那个由y指定的日期单位的W一?
rowidtocharQxQ(转换Q?rowidcd转换成字W型字符?
rpadQx,y[,z]Q(字符Q?q回串x双填充z至长度ؓ(f)y的结?
rtrim(x,y[,z])Q字W)(j) q回串x双截去字符集ؓ(f)y后的l果
signQxQ(数|(j) x为正数、负数?时分别ؓ(f)1、-1?
sinQxQ(数|(j) q回x的正弦?
sinhQxQ(数|(j) q回x的正弦的16q制
soundexQxQ(字符Q?q回x语言发音描述
sqrtQxQ(数|(j) q回x的^Ҏ(gu)
stddev([distinct|all]x)Q聚l)(j) q回数值列x的标准误?
substr(x,y[,z])Q聚l)(j) 从x中的Wy个位|开始取z个字W的子串
sum([distinct|all]x)Q聚l)(j) q回数值列x的合?
sysdateQ日期)(j) q回当前的日期和旉
tanQxQ(数|(j) q回x的正?
tanhQxQ(数|(j) q回x的正切的16q制
to_char(x[,y])Q{换)(j) 一个日期或数字转换成一个字W串
to_date(x[,y])Q{换)(j) 一个字W串转换成日?
to_label(x[,y])Q{换)(j) 一个字W串转换为MLSLABELcd的?
to_multi_bye(x)Q{换)(j) 单字节字符串{换ؓ(f)多字节字W串
to_number(x,y[,z])Q{换)(j) 一个字W串转换成数?
to_single_byte(x)Q{换)(j) 多字节字符串{换ؓ(f)单字节字W串
translate(x,y[,z])Q字W)(j) x中y字符集翻译成z集中相应位置的字W?
trunc(x[,y])Q数|(j) q回x截ؓ(f)y位小数的l果?
trunc(x[,y])Q日期)(j) x舍到由y指定的日期单位的W一天,l果中带有时间部?
uid q回唯一标识当前用户的那个整?
upper(x)Q字W)(j) q回x的大写串
user q回当前用户的数据库用户?
userenv(x) q回关于当前数据库会(x)话的环境信息
variance([distinct|all]x)Q聚l)(j) q回数值列的方?

 



大鱼 2009-03-13 23:00 发表评论
]]>
վ֩ģ壺 Ԫ| ɽ| | | | | ͺ| | | ׺| | | ԫ| °Ͷ| | | ˫| | | ˳| ˫| | Ѱ| żҴ| Ѯ| | | ؿ˹| | ̫| ʻ| | | | | ɼ| | | | ʯ̨| |