浏览模式: 普通 | 列表
分类: Sql Server | < | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | >

SQL Server和Oracle常用函数对比

[ 2006-07-10 21:25:25 | 作者: admin ]
下面
S表示 sql server
O表示 oracle


            数学函数
  1.绝对值
  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.取整(小)
  S:select floor(-1.001) value
  O:select floor(-1.001) value from dual

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

...

阅读全文…

原创日志 调试存储过程问题总结

[ 2006-06-23 16:11:24 | 作者: admin ]
写好一个存储过程,依靠程序是很难调试的,我的方法如下

1、首先用throw得到传递进来的过程参数值
2、打开查询分析器,将储存过程copy进去,然后将头部的过程定义去掉,将外部参数定义放到内部变量定义中
3、给这些外部参数做初始化,用set 或 select

经验:
1、存储sql语句的变量要设置的大一点,遇到未闭合的',则多有可能是这个问题。
試試下面3個,哪個是你要的:
IDENT_CURRENT 會傳回任何工作階段和範圍中,指定資料表所產生的最後識別值。

@@IDENTITY 會傳回所有範圍的目前工作階段中,任何資料表所產生的最後一個識別值。

SCOPE_IDENTITY 會傳回在目前工作階段以及目前範圍中,任何資料表產生的最後一個識別值。


SQL Server 2000中,有三个比较类似的功能:他们分别是:SCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY,它们都返回插入到 IDENTITY 列中的值。

IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 返回为任何会话和作用域中的特定表所生成的值。
@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
...

阅读全文…
作者总结的很好

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num is null
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:
select id from t where num=0

3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
...

阅读全文…

可以推荐的SQL Server语句和存储过程

[ 2006-06-11 11:59:32 | 作者: admin ]
SQL Server语句和存储过程

*************************************************
    统计SQL数据表个数、占用字节
*************************************************

declare @id int
declare @type character(2)
declare @pages
int
declare @dbname sysname
declare @dbsize dec(15,0)
declare @bytesperpage dec(15,0)
declare @pagesperMB dec(15,0)
create table #spt_space
(
objid int null,
rows int null,
reserved dec(15) null,
...

阅读全文…

What is the difference between count

[ 2006-06-11 11:54:40 | 作者: admin ]
You Asked (Jump to Tom's latest followup)

What is the difference between count(1) and count(*) in a sql query
eg.
select count(1) from emp;
      and
select count(*) from emp;

—————————————————————————————

and we said...

nothing, they are the same, incur the same amount of work -- do the same thing,
take the same amount of resources.

You can see this via:
...

阅读全文…

Access 的最大容量

[ 2006-05-27 17:57:34 | 作者: admin ]
Access 的最大容量
  以 Access 2000 中文版为例。打开帮助,找到以下条目:
  设置和定义microsoft Access -> Microsoft Access 规格  

  Microsoft Access 数据库常规规格

  Microsoft Access 数据库 (.mdb) 文件大小 2 G 字节。不过,由于数据库可以包括其他文件中的链接表,所以它的大小仅实际上只受可用存储空间大小的限制。

  数据库中的对象个数 32,768

  模块(包括 HasModule 属性为 True 的窗体和报表) 1,000

  对象名称的字符数 64

  密码的字符个数 14

  用户名或组名的字符个数 20

  用户个数 255

  Microsoft Access 项目常规规格  

  在 Microsoft ...

阅读全文…
mysql: select * from tablename order by rand() limit 10
sqlserver: select top 10 * from tablename order by NEWID()

说明:
NEWID
创建 uniqueidentifier 类型的唯一值。

语法
NEWID ( )

返回类型
uniqueidentifier

例如:
我要随机取数据库里的信息10条,如果你的数据库是sqlserver的话,可用这样的方法:
select top 10 * from tablename order by newid()