数据库
ggmmsoo
这个作者很懒,什么都没留下…
展开
-
在ORalce 中,怎么判断两个时间段之间是否有交集, 编写的一个函数
CREATE OR REPLACE FUNCTION compareTime ( v_beginToc date, v_endToc date, v_begin date, v_end date )RETURN NUMBERAS v_result NUMBER(1):=0; BEGIN IF (v_beginToc BETWEEN v转载 2010-05-05 11:10:00 · 456 阅读 · 0 评论 -
Oracle 不使用索引,索引失效的几种情况
1,2,单独的>,3,like "%_" 百分号在前.4,表没分析.5,单独引用复合索引里非第一位置的索引列.6,字符型字段为数字时在where条件里不添加引号.7,对索引列进行运算.需要建立函数索引.8,not in ,not exist.9,当变量采用的是times变量,而表的字段采用的是date变量时.或相反情况。10, 索引失效。11,基于cost成原创 2010-01-27 09:47:00 · 860 阅读 · 0 评论 -
如何判断一个NVARCHAR类型的字段中包含中文
select * from test where patindex('%[啊-座]%',remark)转载 2010-04-29 15:53:00 · 283 阅读 · 0 评论 -
[SQL Server] 存储过程事务
在存储过程中使用事务,以下为模板:CREATEPROCEDURE testProAS/**//* ------- 事务开始---------- */BEGINTRANSACTION tran_test /**//* -------- 保存事务----------*/SAVE TRANSACTION tran_test/**//* --------数据原创 2010-01-27 10:03:00 · 266 阅读 · 0 评论 -
SQL Server中Rollup关键字使用技巧
首先创建测试表、添加数据。create table #t(a int,b int,c int,d int,e int)insert into #t values(1,2,3,4,5)insert into #t values(1,2,3,4,6)insert into #t values(1,2,3,4,7)insert into #t values(1,2,3,4,8)原创 2010-01-27 09:55:00 · 406 阅读 · 0 评论 -
不会使用索引,导致全表扫描情况
1.不要使用in操作符,这样数据库会进行全表扫描,推荐方案:在业务密集的SQL当中尽量不采用IN操作符2.not in 使用not in也不会走索引推荐方案:用not exists或者(外联结+判断为空)来代替3同样不会使用索引,因此对它的处理只会产生全表扫描推荐方案:用其它相同功能的操作运算代替,如a0 or aa’’4.IS NULL 或IS NOT NULL操原创 2010-01-27 09:45:00 · 314 阅读 · 0 评论 -
oracle取得某个月所有日期
SELECT to_date('2009-8', 'YYYY-MM') + ROWNUM - 1 FROM dualCONNECT BY rownum (select trunc(last_day(to_date('2009-8', 'YYYY-MM')))-trunc(add_months(last_day(to_date('2009-8', 'YYYY-MM')),-1)) fr原创 2009-09-03 11:43:00 · 624 阅读 · 0 评论 -
Oracle分析函数四——函数RANK,DENSE_RANK,FIRST,LAST…
Oracle 分析函数——函数RANK,DENSE_RANK,FIRST,LAST…RANK功能描述:根据 ORDER BY 子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDER BY 子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从 1 开始,往后累加。每次 ORDER BY 表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字转载 2012-12-26 13:52:22 · 250 阅读 · 0 评论 -
Oracle两种临时表类型功能特点比较
Oracle的临时表可以是基于事务的,也可以是基于会话的。本文就Oracle的这两种类型的临时表做一个简单介绍和比较。1.基于事务的临时表1)语法CREATE GLOBAL TEMPORARY TABLE ON COMMIT DELETE ROWS;2)特点当事务提交后,临时表中的数据会被自动删除。3)创建基于事务的临时表并测试临时表特点(1)创建基转载 2013-01-23 10:16:17 · 350 阅读 · 0 评论 -
java 调用 oracle存储过程 事务临时表
JAVA方法中调用oracle存储过程 ,如果存储过程是从事务型临时表查询数据返回游标,则需修改JAVA连接对象属性,如果“自动提交”为TRUE, 把它改为FALSE, 然后等你FETCH完数据、关闭游标之后再手动COMMIT.原创 2013-01-23 11:34:53 · 464 阅读 · 0 评论 -
Oralce中创建表空间和用户
一、安装oracle10g数据库:指定全局数据库名:solid;数据库口令:solid 二、用户通过PL/SQL登录:1、dba连接到数据库的命令:1) 命令窗口中执行conn / as sysdba(或者直接在PL/SQL中输入用户名和密码登陆)2) 输入用户名:sys3) 选择数据库sid:solid4)转载 2013-02-01 11:04:40 · 281 阅读 · 0 评论 -
GROUPING SETS、ROLLUP、CUBE
----start 大家对GROUP BY应该比较熟悉,如果你感觉自己并不完全理解GROUP BY,那么本文不适合你。还记得当初学习SQL的时候,总是理解不了GROUP BY的作用,经过好长时间才终于明白GROUP BY的真谛。当然,这和我本人笨也有关系,但是GROUP BY的确不好理解。本文将介绍DB2 GROUPING SETS、ROLLUP、CUBE的使用方法,这些关键字比GR转载 2015-05-08 16:11:42 · 468 阅读 · 0 评论 -
ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小错误分析
ORA-06502:PL/SQL:数字或值错误:字符串缓冲区太小错误分析 1. 问题起因最近在进行oracle的一些操作时,总会遇到这个错误: ORA-06502: PL/SQL: 数字或值错误 : 字符串缓冲区太小,错误如下:[sql] ORA-00604: 递归 SQL 级别 1 出现错误 ORA-06502: PL/SQL: 数字或值错误转载 2015-05-13 17:30:51 · 10772 阅读 · 0 评论 -
sql中 in 、not in 、exists、not exists 用法和差别
exists (sql 返回结果集为真) not exists (sql 不返回结果集为真) 如下: 表A ID NAME 1 A1 2 A2 3 A3 表B ID AID NAME 1 1 B1 2 2 B2 3 2 B3 表A和表B是1对多的关系 A.ID => B.AID SELECT ID,NAME F原创 2010-01-27 10:09:00 · 392 阅读 · 4 评论 -
SQL Server字符串分割
一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。CREATE function Get_StrArrayLength( @str varchar(1024), --要分割的字符串 @split varchar(10) --分隔符号)returns intasbegin dec原创 2010-01-27 10:11:00 · 291 阅读 · 0 评论 -
Oracle 多行合并一行 方法
NOTE:特别声明一下内容转自网络 http://www.ningoo.net/html/2008/how_to_do_string_aggregate_on_oracle.html 假如有如下表,其中各个i值对应的行数是不定的 Sql代码 SQL> select * from t; I A D --转载 2012-12-26 13:50:26 · 306 阅读 · 0 评论 -
sql+优化讲义
sql优化一. 目的数据库参数进行优化所获得的性能提升全部加起来只占数据库应用系统性能提升的40%左右,其余60%的系统性能提升全部来自对应用程序的优化。许多优化专家甚至认为对应用程序的优化可以得到80%的系统性能提升。因此可以肯定,通过优化应用程序来对数据库系统进行优化能获得更大的收益。对应用程序的优化通常可分为两个方面:源代码的优化和SQL语句的优转载 2010-03-02 09:02:00 · 397 阅读 · 0 评论 -
Sybase isql 参数解释
isql 实用工具使您得以输入 Transact-SQL 语句、系统过程和脚本文件.语法 isql [-?] | [-L] | [ { {-U login_id [-P password]} | -E } [-S server_name] [-H wksta_name] [-d db_name] [-l time_out] [-t time_out] [原创 2010-03-01 15:04:00 · 504 阅读 · 0 评论 -
如何在SQL Server中制作数据库自动定时备份
前提:操作计算机上要安装有SQL Server客户端应用程序。第一步:双击屏幕右下角的,在服务(R)处选SQL Server Agent,然后点击开始/继续。第二步:在〔开始〕—>〔程序〕处,启动SQL Server —>企业管理器。 第三步:在要备份的数据库名上按右键,选择备份数据库。 第四步:选中要备份的数据库名,选择添加。 第五原创 2010-01-27 10:37:00 · 289 阅读 · 0 评论 -
改写的wm_concat函数运行效率问题
之前因为遇到过超长字符串拼接的问题,也在本版问过。后来经过大家的帮助,找到一个改写wm_concat的办法,使其支持返回clob类型。 虽然功能上是可以的,但是在实际运行中,发现效率要比wm_concat函数慢的根本不在同一个等级上,wm_concat处理大约7万条数据的拼接仅需要3秒,而改写的函数需要可能1个小时。 这里,有没有oracle达人能够帮忙看一下,下一步还可以怎么转载 2011-10-24 14:48:24 · 2488 阅读 · 0 评论 -
如何找出外键关联表
select a.table_name 外键表名,a.column_name 外键列名,b.table_name 主键表名,b.column_name 主键列名from (select a.constraint_name,b.table_name,b.column_name,a.r_constraint_namefrom user_constraints a, user_cons_co转载 2010-05-20 15:29:00 · 633 阅读 · 0 评论 -
比较不同用户下表结构
select a.table_name user1_table, a.column_name user1_column, b.table_name , b.column_name user2_column from (select table_name, column_name from dba_tab_columns where owner= 'WEB转载 2010-05-20 15:27:00 · 294 阅读 · 0 评论 -
SQL SERVER中ROLLUP 运算符的用法
问题的提出: 现有表A,内容如下:编码 仓库 数量01 A 601 B 702 A 802 B 9 现在想按编码查询出这种格式:--------------------01 A 601 B 7汇总小计:原创 2010-01-27 10:07:00 · 490 阅读 · 0 评论 -
sql server 日期比较、日期查询常用语句:月的第一天,季度的第一天等
在SQL SERVER中,你可能需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。 在使用本文中的例子之前原创 2010-01-27 10:06:00 · 1083 阅读 · 0 评论 -
select into 和 insert into select 两种表复制语句
select * into destTblfrom srcTblinsert into destTbl(fld1, fld2)select fld1, 5 from srcTbl以上两句都是将 srcTbl 的数据插入到 destTbl,但两句又有区别的:第一句(select into from)要求目标表(destTbl)不存在,因为在插入时会自动创建。第二句(ins原创 2010-01-27 10:04:00 · 298 阅读 · 0 评论 -
ORACLE根据日期获取当月的天数
CREATE OR REPLACE FUNCTION get_days (p_date DATE) RETURN NUMBER AUTHID CURRENT_USERAS p_days NUMBER := 0;BEGIN SELECT ( TO_DATE (TO_CHAR (ADD_MONTHS (p_date, 1), 'yyyymm'), 'yyyymm')转载 2009-09-04 10:19:00 · 4728 阅读 · 0 评论 -
PL/SQL不配tnsnames.ora直接连接Oracle数据库的方法
之前在用PL/SQL连接Oracle的时候都要先在Oracle客户端 tnsnames.ora文件下配置一个TNS连接,下面的图例讲述了不用配置TNS的连接方法。 或者输入 username/password@ip地址:端口/数据库名称 到Username,按OK就可以直接连到数据库了。转载 2015-07-01 09:41:22 · 870 阅读 · 0 评论