日度归档:2019年7月20日

mssql sqlserver null值你知多少?


摘要:
下文全面分析sqlserver中的null值,如下所示:
实验环境:sql server 2008 R2



sqlserver中的NULL值,在sqlserver中代表空值,当我们对NULL值进行逻辑比较时,会出现”UNKNOWN”这个值。(sql逻辑运算一共有TRUE FALSE UNKNOWN三个返回值)。

sql逻辑判断中,对NULL的处理会返回UNKNOWN,这个逻辑结果及不会被if 处理也不会被else处理。
例:

 
  select * from [maomao365.com]
    where  [age] > 8 
  /*
   当age值存在值,并且大于8时,则返回true,并返回相应行记录
 */
  select * from [maomao365.com]
    where  [age] <= 8 
  /*
   当age值存在值,并且小于等于8时,则返回true,并返回相应行记录
 */
  ------------------------------------------------------------------------------------
  ---此处应注意,当age为null时,以上两个语句的查询条件都无法返回
  ---因为age值为null时,同8进行对比返回的值为UNKNOWN,永远都无法返回true
  ------------------------------------------------------------------------------------

 ---例2:
  declare @maomao varchar(20)
  if @maomao ='blog'
  begin
    print '此处会剔除逻辑运算为false和UNKNOWN的数值'
  end
  else
  begin
    print '此处会剔除逻辑运算为true和UNKNOWN的数值'
 end
 go 

NULL值的正确处理方法:应使用 is null 或 is not null

if @maomao is null
 begin
  print '值为NULL'
 end
 go
 select * from [maomao365.com]
    where  [age]  is  null  

mssql sqlserver使用sql脚本获取当前年份/月份的方法分享


摘要:
下文讲述sql脚本获取当前年份月份的方法,如下所示:
实验环境:sql server 2008 R2



实现思路:
1.借助getDate函数获取当前日期
2.借助日期函数datepart 或 datename 获取年份和月份 或使用year获取年份 使用month获取月份

   ---方法1:
    select DATEPART(year,getdate()) as [当前年份], DATEPART(month,getdate()) as [当前月份]
    ---方法2:
    select DATEName(year,getdate()) as [当前年份], DATENAME(month,getdate()) as [当前月份]
    ---方法3:
    select year(getdate()) as [当前年份], month(getdate()) as [当前月份]

mssql sqlserver 使用between关键字检索数据表中开头字母为”A~D”的数据


摘要:
下文讲述在sqlserver检索数据时,使用between关键字检索数据字母前缀的方法分享,如下所示:
实验环境:sqlserver 2008 R2


    select * from [maomao365.com] 
     where [列名]  between 'A' and 'D'
    /*
      maomao365.com:为数据表名称
      列名:为数据列的名称
    */