/******************************************************************************
** Name: usp_cfg_GetFileByObjectIDAndType
** Desc: 根据objectID和type获取附件
**
**
** Return Values:
**
** Parameters:
** Auth:
** Date:2008-10-28
*******************************************************************************/
ALTER proc [dbo].[usp_cfg_GetFileByObjectIDAndType]
@ObjectID uniqueidentifier = 'E993BEFC-040F-47C4-BEB4-3782145341FA',
@Type varchar(500) = null
as
begin
SET NOCOUNT ON; select IsNull(Title,'') +
IsNull(Name,'') +
IsNull(Description,'') +
IsNull(KeyWord,'') __Keyword, NameSortExpression = --特殊处理,为部务会议排序使用(按名称中的日期排序)
case when @ObjectID = '0BE5DF9E-02B0-44B8-BB0C-9633E26C888D' and isdate(replace(replace([name],'部务会备忘',''),'.doc',''))=1 then cast(replace(replace([name],'部务会备忘',''),'.doc','') as datetime)
when @ObjectID = '0BE5DF9E-02B0-44B8-BB0C-9633E26C888D' and isdate(replace(replace([name],'部务会备忘',''),'.doc',''))=0 then cast('1900-1-1' as datetime)
else UploadTime
end,
[FileID] ,
[ObjectID] ,
[Title] ,
[Name] ,
[Description] ,
[KeyWord] ,
[ContentType] ,
--[Content] [image] NULL,
[ContentLen] ,
[Uploador] ,
[UploadTime] ,
[Status] ,
[type] ,
[Ranking],
null as Content from tbl_cfg_file
where objectid = @ObjectID
and (
charindex( cast(dbo.ufn_IsNullOrEmpty(@Type,Type) as varchar(8000)),cast(Type as varchar(500))) > 0
or (dbo.ufn_IsNullOrEmpty(@Type,'') = dbo.ufn_IsNullOrEmpty(Type,''))
)
end set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON

  

/******************************************************************************
** Name: ufn_IsNullOrEmpty
** Desc: 同时判断null和空字符
**
**
** Return Values:null或空时,返回指定字符串,否则,返回自己
**
** Parameters:
** Auth:
** Date: 2006-11-3
*******************************************************************************/
ALTER function ufn_IsNullOrEmpty(@expression sql_variant, @Replace sql_variant)
returns sql_variant
as
begin
if( @expression = '' or @expression is null)
return @Replace
return @expression
end

  

sql_variant 这是一个不起眼,也用得不多的数据类型,但在某些场合下,可能很有用

一种数据类型,用于存储 SQL Server 2005 支持的各种数据类型(不包括 textntextimagetimestamp 和 sql_variant)的值。

换而言之,这个类型很容易让我们联想到VB编程中的variant类型,或者C#里面的object类型。它可以存放很多种格式。例如一个sql_variant列既可以存放数字,也可以存放文本。

当然,正因为这样的特性,它们在读取的时候必须进过一些转换,否则是不知道什么类型的。而且这种转换会有风险,这也就是所谓的类型不安全。

这种类型在使用上还有另外一些限制,请确认在使用之前对其进行必要的了解

一点都不意外,这个类型如果通过ORM框架(例如LINQ TO SQL)映射到客户程序中,会是一个object类型

sql case when then else end sql_variant的更多相关文章

  1. SQL case when 的使用总结

    在网上看到一篇关于case when语句的博客,写得很好,我这里是摘录的,还有我的一些体会,原博客地址:SQL Case when 的使用方法. Case具有两种格式.简单Case函数和Case搜索函 ...

  2. sql case when 多条件小结

    sql case when 多条件 小结 -- 第一种 格式 : 简单Case函数 : -- 格式说明 -- case 列名 -- when 条件值1 then 选择项1 -- when 条件值2 t ...

  3. SQL CASE语句的使用

    SQL CASE语句的使用 CASE是一个控制流语句,其作用与IF-THEN-ELSE语句非常相似,可根据数据选择值. CASE语句遍历条件并在满足第一个条件时返回值. 因此,一旦条件成立,它将短路, ...

  4. SQL --- Case when 的使用方法

    1. Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' E ...

  5. sql case 用法总结

    快下班了,抽点时间总结一下sql 的 case 用法. sql 里的case的作用: 用于计算条件列表的表达式,并返回可能的结果之一.sql 的case 类型于编程语言里的 if-esle if-el ...

  6. sql case when then else end

    我们都知道SQL中适用case when then来转化数据库中的信息 比如 select (case sex when 0 then '男' else '女' end) AS sex from st ...

  7. SQL Case when 的使用方法(转)

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  8. sql case when 速记

    Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...

  9. Sql case when用法

    说明,sql中的if和else 是不能在select 语句中使用的.只能用来控制sql程序的流程.只能用case when. CREATE TABLE USER(NAME VARCHAR(20) NO ...

随机推荐

  1. Oracle中查询某字段不为空或者为空的SQL语句怎么写

    比如 insert into table a (a1,b1)values("a1",''); 对于这种情况,因为表里存的是'',其实是没有内容的,要查询这个字段,不能直接使用 se ...

  2. 萌新学习Python爬取B站弹幕+R语言分词demo说明

    代码地址如下:http://www.demodashi.com/demo/11578.html 一.写在前面 之前在简书首页看到了Python爬虫的介绍,于是就想着爬取B站弹幕并绘制词云,因此有了这样 ...

  3. golang test cannot find import

    1. 能够import别的项目的main package. 2. 可是引用别的项目main package的时候,须要首先删除~/bin/main_package_name(你所引用的报名),不然回报 ...

  4. 【前端】HTML

    一.HTML介绍 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen ...

  5. 如何使用Xcode进行高保真原型设计?

    转载自:http://www.guimobile.net/xcode-high-fidelity-prototype-design.html Xcode不仅是开发者用来开发iOS Apps的开发工具, ...

  6. 设置SSH编码为中文

    http://www.qzz.in/?post=198下面是详细方法: 方法1: vi /etc/sysconfig/i18n 将内容改为 LANG="zh_CN.GB18030" ...

  7. php里面的编码问题

    1 获取当前字符串的编码 $encode = mb_detect_encoding($str, array("ASCII",'UTF-8',"GB2312",& ...

  8. 更新Bash路径的缓存

    ---恢复内容开始--- 1.登陆一个新的vps时候,发现git的版本是1.8的,太久了,于是就源码安装了新的版本2.4. 2.老版本在/usr/bin/git,新版本安装的/usr/local/bi ...

  9. cp/scp命令详解

    cp:拷贝命令 用法: cp [参数] source dest cp [参数] source ... directory 说明:将一个档案拷贝至另一个档案,或数个档案拷贝到另一目录 参数: -a 尽可 ...

  10. vue 过渡效果-列表过渡

    到目前为止,关于过渡我们已经讲到, 单个节点 同一时间渲染多个节点的一个 那么怎么同时渲染整个列表,比如使用v-if?在这种场景下,使用<transition-group>组件,在我们深入 ...