SQL条件处理–Case语句

SQL中使用CASE处理条件      在使用SQL的过程中,有时候可能会要对数据进行条件查询。比如字段A为True时查询出“男”,否则查询出“女”。这样就可以不在程序中在去判断了。在SQL中,可以利用Case语句来完成这样的查询。 一、Case介绍 CASE 计算条件列表并返回多个可能结果表达式之一。 CASE 具有两种格式: 简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。 CASE 搜索函数计算一组布尔表达式以确定结果。 两种格式都支持可选的 ELSE 参数。 语法 简单 CASE 函数: CASE input_expression     WHEN when_expression THEN result_expression         [ …n ]     [         ELSE else_result_expression     END CASE 搜索函数: […]

SET PARSEONLY 与SET NOEXEC (Transact-SQL)

SET PARSEONLY 检查每个 Transact-SQL 语句的语法并返回任何错误消息,但不编译和执行语句。 SET PARSEONLY { ON | OFF } 当 SET PARSEONLY 为 ON 时,SQL Server 只分析语句。当 SET PARSEONLY 为 OFF 时,SQL Server 编译并执行语句。 SET PARSEONLY 的设置是在分析时设置,而不是在执行或运行时设置。 在存储过程或触发器中不要使用 PARSEONLY。如果 OFFSETS 选项为 ON 而且没有出现错误,则 SET PARSEONLY 返回偏移量。 SET […]

从数据库随机读取数据

示例代码: SQL Server:Select Top * From  表 Order By NewID()   Access  :Select Top * From 表 Order By Rnd(ID)          *说明-Rnd(ID) 其中的ID是自动编号字段,可以利用其他任何数值来完成,比如用姓名字段(UserName)  Select Top 10 * From 表 Order BY Rnd(Len(UserName))   MySql:Select * From 表 Order By Rand() Limit […]

set nocount on 是什么意思?

我想請問一下: set nocount on 是什麼意思, 為什麼很多的stored procedures的第一行都有遮一句話??多謝!!! 每次我们在使用查询分析器调试SQL语句的时候,通常会看到一些信息,提醒我们当前有多少个行受到了影响,这是些什么信息?在我们调用的时候这些信息有用吗?是否可以关闭呢? 答案是这些信息在我们的客户端的应用程序中是没有用的,这些信息是存储过程中的每个语句的DONE_IN_PROC 信息。 我们可以利用SET NOCOUNT 来控制这些信息,以达到提高程序性能的目的。 MSDN中帮助如下: SET NOCOUNT 使返回的结果中不包含有关受 Transact-SQL 语句影响的行数的信息。 语法 SET NOCOUNT { ON | OFF } 注释 当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF […]

T-SQL象数组一样处理字符串、分割字符串

    在日常的编程过程中,数组是要经常使用到的。在利用SQL对数据库进行操作时,有时就想在SQL使用数组,比如将1,2,3,4,5拆分成数组。可惜的是在T-SQL中不支持数组。不过还是有变通的办法。我们可以自己编写两函数Get_StrArrayLength(取得字符串的长度-元素的个数)和Get_StrArrayStrOfIndex(按指定符号分割字符串,返回分割后指定索引的第几个元素)。有了这两个函数,我们就可以非常方便的在T-SQL中处理形如1,2,3,4,5这样的字符串了。      T-SQL对字符串的处理能力比较弱,比如我要循环遍历象1,2,3,4,5这样的字符串,如果用数组的话,遍历很简单,但是T-SQL不支持数组,所以处理下来比较麻烦。下边的函数,实现了象数组一样去处理字符串。  一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。 CREATE function Get_StrArrayLength (  @str varchar(1024),  –要分割的字符串  @split varchar(10)  –分隔符号 ) returns int as  begin   declare @location int   declare @start int   declare @length int   set @str=ltrim(rtrim(@str))   set @location=charindex(@split,@str)   set @length=1    while @location<>0      begin […]

常用SQL字符串函数问题集锦

SQL字符串函数 字符串函数对二进制数据、字符串和表达式执行不同的运算。此类函数作用于CHAR、VARCHAR、 BINARY、 和VARBINARY 数据类型以及可以隐式转换为CHAR 或VARCHAR的数据类型。可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中使用字符串函数。常用的字符串函数有: 一、字符转换函数 1、ASCII() 返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。  2、CHAR() 将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。  3、LOWER()和UPPER() LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。  4、STR() 把数值型数据转换为字符型数据。 STR (<float_expression>[,length[, <decimal>]]) length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。 当length 或者decimal 为负值时,返回NULL; 当length 小于小数点左边(包括符号位)的位数时,返回length […]