`
zheyiw
  • 浏览: 1020346 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

sql基础_Case_特殊函数_异常_脏读

    博客分类:
  • SQL
sql 
阅读更多
--脏读
set transaction isolation level read uncommitted;  


--不带参数
SELECT  CASE    
        WHEN 11=1 THEN '十一'   
        WHEN 12=12 THEN '十二'   
        ELSE '零'   
        END  
--带参数
DECLARE @a VARCHAR(20)
SELECT  CASE @a 
        WHEN 11 THEN '十一' 
        WHEN 12 THEN '十二' 
        ELSE '零' 
        END


------关于异常抛出和捕获-----

在存储过程中使用下面的预计抛出异常
RaisError(16, 1, @ErrorMsg) 
RaisError(90018, 16, 1, @ErrorMsg) 
其中 @ErrorMsg 为异常消息(字符串)
在C#中调用存储的地方就会收到异常,此时就可以捕获异常显示异常消息


------特殊的函数:
1, isnumeric( expression )
  -- 返回值 1 | 0,判断是否是数字类型。
  数值类型包括(int、bigint、smallint、tinyint、numeric、money、smallmoney、float、decimal、real)
  示例:
select * from tablename where isnumeric(columnname)<> 1;


2, isdate( expression )
  -- 如果 expression 是有效的 date、time 或 datetime 值,则返回 1;否则返回 0。
  示例:
if isdate('2009-05-12 10:19:41.177') = 1
  print '有效的日期'
  else
  print '无效的日期'


3,  patindex( '%pattern%' , expression )
  -- 返回指定表达式中某模式第一次出现的起始位置;
  -- 如果在全部有效的文本和字符数据类型中没有找到该模式,则返回零。
  'pattern' : 一个通配符字符串。pattern 之前和之后必须有 % 字符(搜索第一个或最后一个字符时除外)。
  expression : 通常为要在其中搜索指定模式的字符串数据类型列。
  示例:
select patindex('%BB%','AA_BB_CC_DD_AA_BB_CC_DD')
  -- 返回:4
  上面示例返回的是第一个‘BB’的开始位置。
  其实,使用 charindex 函数也能实现上面示例的查询,如下:
select charindex('BB','AA_BB_CC_DD_AA_BB_CC_DD')
  --返回:4
  patindex 函数与 charindex 函数的区别: 
select patindex('%[0-9][A-Z]%', 'AA_BB_9C_DD_AA_9F_CC_DD')
  -- 返回:7
select charindex('%[0-9][A-Z]%','AA_BB_9C_DD_AA_9F_CC_DD')
  -- 返回:0
  看出来没有?patindex 函数可以使用通配符,而charindex 函数不能。也就是说:patindex 函数功能更强大!



4,  newid( )
  -- 创建 uniqueidentifier 类型的唯一值。
  这个函数总是能返回一个新的GUID号码,它永远不会重复,而且毫无规律。
  示例: 
declare @myid uniqueidentifier
  set @myid = newid() 
  print '@myid 的值是: '+ convert(varchar(255), @myid)
  -- @myid 的值是: 0B939411-4827-485E-884B-5BEB1699CFEE



5,  collate
  -- 一个子句,可应用于数据库定义或列定义以定义排序规则,或应用于字符串表达式以应用排序规则转换。
  collate 子句只能应用于 char、varchar、text、nchar、nvarchar 和 ntext 数据类型。
  示例:
drop table #tempTalbe
  go
  create table #tempTalbe
  (
  _id int,
  _name varchar(30)
  )
  go
  insert into #tempTalbe values(1,'中');
  insert into #tempTalbe values(2,'国');
  insert into #tempTalbe values(3,'人');
  select * from #tempTalbe
  order by _name
  collate latin1_general_cs_as_ks_ws asc;
  go 
  /* 显示结果:
  _id _name
  ----------- ------------------------------
  1 中
  2 国
  3 人
  */
  select * from #tempTalbe
  order by _name
  collate Chinese_PRC_CS_AS_KS_WS asc;
  go
  /* 显示结果:
  _id _name
  ----------- ------------------------------
  2 国
  3 人
  1 中
  */
  注意:
  可以执行系统函数 fn_helpcollations 来检索 Windows 排序规则和 SQL Server 排序规则的所有有效排序规则名称的列表:
  select * from fn_helpcollations()


6,  sp_executesql 存储过程
  建议您在执行字符串时,使用 sp_executesql 存储过程而不要使用 execute 语句。
  由于此存储过程支持参数替换,因此 sp_executesql 比 execute 的功能更多;
  由于 sqlserver 更可能重用 sp_executesql 生成的执行计划,因此 sp_executesql比execute更有效。
  示例:  
create table #tb_suer( id int)
  go
  insert into #tb_suer values(1234)
  go
  declare @tbname nvarchar(20)
  declare @sql nvarchar(500)
  set @tbname='#tb_suer'
  set @sql='select * from ' + @tbname
  execute sp_executesql @sql 
  /* 结果:
  id
  -----------
  1234
  */



7,  checksum
  -- 返回按照表的某一行或一组表达式计算出来的校验和值。 checksum 用于生成哈希索引。
  checksum ( * | expression [ ,...n ] )
  * 指定对表的所有列进行计算。如果有任一列是非可比数据类型,则 checksum 返回错误。
  非可比数据类型有 text、ntext、image、xml 和 cursor,还包括以上述任一类型作为基类型的 sql_variant。
  expression 除非可比数据类型之外的任何类型的表达式。
  示例:
  -- 找出在T1有,T表没有的记录。
select * from t1 where checksum(*) not in ( select checksum(*) from t ) 
  上面示例,等于是把t1表里的一行数据hash和t表一行数据hash后相比,就是说两个表里有没有行完全相当的。

分享到:
评论
1 楼 自己811005 2018-01-14  
3e0cb37da14117f477ff4f2f94c729eb

相关推荐

    PL_SQL_

    包括字符集、词法单元(如分隔符、标识符、文字、注释)、声明、命名规范、作用域和可见度、变量赋值、表达式与比较以及内置函数等内容,这些都是理解和编写PL/SQL程序的基础。 ### PL/SQL数据类型 预定义数据类型...

    Oracle_PL-SQL.rar_ORACLE PL_oracle_oracle sql_oracle 教程_pl sql

    5. **存储过程和函数**:存储过程是一组预编译的PL/SQL语句,可以在数据库中存储并重复调用,而函数则返回一个值,两者都是数据库模块化设计的基础。 6. **触发器**:触发器是一种特殊的存储过程,会在特定的数据库...

    PL_SQL基础.7z

    这个名为“PL_SQL基础.7z”的压缩包显然是一个学习PL/SQL基础知识的资源,包含了一份名为“PL_SQL基础.pdf”的文档。 PL/SQL的基础知识涵盖了以下几个关键领域: 1. **语法结构**:PL/SQL由声明部分、执行部分和...

    PL-SQL(chinese).rar_pl_pl sql_pl/sql

    PL/SQL支持流程控制语句(如IF-THEN-ELSE、CASE)、循环(如WHILE、FOR)、异常处理(如BEGIN-EXCEPTION-END)以及动态SQL。它还允许声明变量、游标、记录类型等,提供了丰富的数据类型,如NUMBER、VARCHAR2、DATE...

    PL-SQL.rar_pl_pl/sql

    PL/SQL是Oracle数据库系统中的编程语言,它是SQL(结构化查询语言)的扩展,用于在Oracle环境中编写存储过程、函数、触发器等数据库对象。这个"PL-SQL.rar_pl_pl/sql"压缩包可能包含了一个适合初学者学习PL/SQL的...

    OraclePL-SQL.rar_ORACLE PL_oracle_oracle sql

    Oracle PL/SQL是Oracle数据库系统中的重要组成部分,用于开发存储过程、函数、触发器等数据库对象,以及执行复杂的SQL操作。以下是对Oracle PL/SQL及其相关知识点的详细说明: 1. **Oracle数据库基础**:Oracle...

    PL_SQL.rar_plsql

    7. **存储过程和函数**:PLSQL允许创建存储在数据库中的过程和函数,以便在SQL查询中调用,提升性能并减少网络通信。 8. **触发器(Trigger)**:触发器是一种特殊的存储过程,它在特定的数据库事件(如INSERT、...

    Oracle PL SQL语言基础

    游标变量是PL/SQL中的一个特殊变量,用于存储游标状态。它们可以被用作函数参数,使代码更灵活。创建和使用游标变量的示例如下: ```sql DECLARE cursor_var EmpCursor%TYPE; v_employee employees%ROWTYPE; BEGIN...

    oracle_常用SQL

    执行部分包含SQL语句和控制流语句(如IF-THEN-ELSE、CASE、FOR循环);异常处理部分用来捕获和处理运行时错误。 3. **PL/SQL函数和过程**:PL/SQL允许创建自定义函数和过程,它们可以在SQL语句中调用,也可以在PL/...

    Oracle PL_SQL Language Pocket Reference, 5th Edition.2015.pdf

    - **执行PL/SQL函数**:介绍如何在SQL语句中调用PL/SQL函数,实现更复杂的逻辑。 - **动态SQL**:讲解如何使用PL/SQL执行动态构建的SQL语句。 ##### 6. 高级主题 - **编译选项**:讨论编译时可用的各种选项及其对...

    Informatica_PowerCenter_V8函数功能使用指南.doc

    - **CASE WHEN THEN**:更灵活的条件判断,类似于SQL的CASE语句。 通过熟练掌握这些函数,用户可以在Informatica PowerCenter V8中高效地处理和转换数据,实现复杂的数据整合和分析任务。了解并精通这些函数是成为...

    oracle_sql tutorial.pdf

    - **5.1.7 包**:包是 PL/SQL 中的组织单元,用于组织相关的类型、变量、常量、过程和函数等。 - **5.1.8 编程实践**:包括最佳实践和常见问题解决方案等。 通过上述知识点的介绍,我们可以看到 Oracle SQL 不仅仅...

    pl/sql精通

    1. PL/SQL基础:PL/SQL是Oracle特有的结构化查询语言,由三部分组成:声明部分(DECLARATION)、执行部分(EXECUTION)和异常处理部分(EXCEPTION)。声明部分用于定义变量、游标和过程;执行部分包含SQL语句和控制...

    PL/SQL 程序设计基础

    2. **组成元**:PL/SQL的基本组成元素包括变量、常量、过程、函数、游标、异常、控制结构(如循环、条件语句)等。理解这些元素的用法是编写PL/SQL程序的关键。 3. **游标**:游标是PL/SQL中处理单行记录的重要工具...

    PL/SQl超级笔记

    PL/SQL提供了多种流程控制结构,如IF-THEN-ELSIF-ELSE、CASE、WHILE、FOR循环以及GOTO语句。这些结构使得程序可以根据条件执行不同的代码路径。 **SQL操作** PL/SQL可以直接嵌入SQL语句,进行数据的增删改查。例如...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    Oracle数据库SQL基础-个人学习总结.pdf

    本PDF文档总结了Oracle数据库SQL的基础知识,适用于初学者进行自我学习或内部培训。 1. **基本语法** SQL语法是所有操作的基础,包括创建、查询、更新和删除数据。在Oracle中,SQL语句遵循一定的格式和规则,例如...

    sql总结以及linux部署

    `DECODE`函数是Oracle中的一种条件判断函数,可以用来实现类似于`CASE`语句的功能。这里展示了几种不同的用法,例如根据某个字段的值返回不同的结果。 4. **数据备份与恢复** - MySQL: ```sql mysqldump -u ...

Global site tag (gtag.js) - Google Analytics