易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL SERVER中关于NULL的设定


/***************************************************  
          作者:herowang(让你望见影子的墙)
    日期:2009.12.19
          注:    转载请保留此信息
    更多内容,请访问我的博客:blog.csdn.net/herowang
****************************************************/
SQL SERVER2005中关于NULL的设定
NULL处理时SQL SERVER中一个比较麻烦的事情,有许多处理可能因为NULL而得到一些预想不到的结果。NULL在数据库中一般有三层含义:1、该属性值不适合该实体;2、该实体还没有改属性;3、该实体有该属性,但是现在还不知道。
对于NULL的使用,和数据库的选项和会话的设置是息息相关的,也就是说不同的数据库的选项和会话的设置,对NULL的处理方式是不一样的。对于影响NULL处理的设置有如下几种:
一、ANSI_NULL_DEFT_ON 及ANSI_NULL_DEFT_OFF。
当该选项为OFF时,通过create table和alter table创建的新列默认为not null,对应的数据库选项为ANSI NULL默认值为false。当该选项为On时,则默认值为null,对应的数据库选项为ANSI NULL默认值为TRUE。
【测试1】
SET ANSI_NULL_DFLT_ON OFF
go
create table test1(id int,col char(10))
查看该表的属性,可以看到该表的两列不为空;
【测试2】
SET ANSI_NULL_DFLT_ON ON
go
create table test2(id int,col char(10))
查看该表的属性,可以看到该表的两列为空;
对于ANSI_NULL_DEFT_ON 及ANSI_NULL_DEFT_OFF是互斥选项,用于指明是否覆盖数据库选项,当开启一个选项时,都会迫使相反的那个选项关闭;但是关闭某个选项时,不会使相反的那个选项打开,而只是不再开启该选项。如果两个选项都关闭,那么将会启用数据库选项。
【测试3】
SET ANSI_NULL_DFLT_ON OFF
SET ANSI_NULL_DFLT_Off OFF
Go
create table tb(id int,col char(10))—ANSI NULL默认为false
查看该表的属性,可以看到该表的两列不允许为空;
【测试4】
SET ANSI_NULL_DFLT_ON OFF
SET ANSI_NULL_DFLT_Off OFF
Go
create table tb(id int,col char(10))—ANSI NULL默认为true
查看该表的属性,可以看到该表的两列允许为空;
二、SET CONCAT_NULL_YIELDS_NULL
当开启SET CONCAT_NULL_YIELDS_NULL时,如果串联操作的两个操


相关文档:

修改SQL SERVER数据库表结构的SQL命令

  向表中增加一个 varchar 列:
  ALTER TABLE distributors ADD COLUMN address varchar(30);
  从表中删除一个字段:
  ALTER TABLE distributors DROP COLUMN address RESTRICT;
  在一个操作中修改两个现有字段的类型:
  ALTER TABLE distributors
  ALTER COLUMN address TYPE varchar(80),
......

SQL实现完全排列组合

---SQL实现完全排列组合
create function F_strSpit(@s varchar(200)) returns table
as
return(
select value=substring(@s,i,num)+substring(@s,num-1+j,1)
from (select num=number from spt_values where type='p' and number<len(@s) and number>0)TA,
(select i=number+1 from spt_values where type='p ......

Sql server存储过程中 数据集的缓存

create procedure DeleteWareHouse_StoreArea_SummaryByPUR
(@po_no nvarchar(100))
as
begin
declare @cacheTable table(wh_id int);--声明一个table类型的变量
insert @cacheTable select wh_id from aps_inventory_store_area where description=@po_no--向变量@cacheTable中添加结果集
--select * from @cac ......

Excel中数据导入到SQL Server数据库

using System.Data.SqlClient;
using System.Data.OleDb;
  private void tsmiImportTeacherInfo_Click(object sender, EventArgs e)
        {
            DataSet ds;
        ......

sql里的exists与in、not exists与not in的区别

系统要求进行SQL优化,对效率比较低的SQL进行优化,使其运行效率更高,其中要求对SQL中的部分in/not in修改为exists/not exists
修改方法如下:
in的SQL语句
SELECT id, category_id, htmlfile, title, convert(varchar(20),begintime,112) as pubtime
from tab_oa_pub WHERE is_check=1 and
category_id in (sel ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号