--脏读
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后相比,就是说两个表里有没有行完全相当的。
分享到:
相关推荐
包括字符集、词法单元(如分隔符、标识符、文字、注释)、声明、命名规范、作用域和可见度、变量赋值、表达式与比较以及内置函数等内容,这些都是理解和编写PL/SQL程序的基础。 ### PL/SQL数据类型 预定义数据类型...
5. **存储过程和函数**:存储过程是一组预编译的PL/SQL语句,可以在数据库中存储并重复调用,而函数则返回一个值,两者都是数据库模块化设计的基础。 6. **触发器**:触发器是一种特殊的存储过程,会在特定的数据库...
这个名为“PL_SQL基础.7z”的压缩包显然是一个学习PL/SQL基础知识的资源,包含了一份名为“PL_SQL基础.pdf”的文档。 PL/SQL的基础知识涵盖了以下几个关键领域: 1. **语法结构**:PL/SQL由声明部分、执行部分和...
PL/SQL支持流程控制语句(如IF-THEN-ELSE、CASE)、循环(如WHILE、FOR)、异常处理(如BEGIN-EXCEPTION-END)以及动态SQL。它还允许声明变量、游标、记录类型等,提供了丰富的数据类型,如NUMBER、VARCHAR2、DATE...
PL/SQL是Oracle数据库系统中的编程语言,它是SQL(结构化查询语言)的扩展,用于在Oracle环境中编写存储过程、函数、触发器等数据库对象。这个"PL-SQL.rar_pl_pl/sql"压缩包可能包含了一个适合初学者学习PL/SQL的...
Oracle PL/SQL是Oracle数据库系统中的重要组成部分,用于开发存储过程、函数、触发器等数据库对象,以及执行复杂的SQL操作。以下是对Oracle PL/SQL及其相关知识点的详细说明: 1. **Oracle数据库基础**:Oracle...
7. **存储过程和函数**:PLSQL允许创建存储在数据库中的过程和函数,以便在SQL查询中调用,提升性能并减少网络通信。 8. **触发器(Trigger)**:触发器是一种特殊的存储过程,它在特定的数据库事件(如INSERT、...
游标变量是PL/SQL中的一个特殊变量,用于存储游标状态。它们可以被用作函数参数,使代码更灵活。创建和使用游标变量的示例如下: ```sql DECLARE cursor_var EmpCursor%TYPE; v_employee employees%ROWTYPE; BEGIN...
执行部分包含SQL语句和控制流语句(如IF-THEN-ELSE、CASE、FOR循环);异常处理部分用来捕获和处理运行时错误。 3. **PL/SQL函数和过程**:PL/SQL允许创建自定义函数和过程,它们可以在SQL语句中调用,也可以在PL/...
- **执行PL/SQL函数**:介绍如何在SQL语句中调用PL/SQL函数,实现更复杂的逻辑。 - **动态SQL**:讲解如何使用PL/SQL执行动态构建的SQL语句。 ##### 6. 高级主题 - **编译选项**:讨论编译时可用的各种选项及其对...
- **CASE WHEN THEN**:更灵活的条件判断,类似于SQL的CASE语句。 通过熟练掌握这些函数,用户可以在Informatica PowerCenter V8中高效地处理和转换数据,实现复杂的数据整合和分析任务。了解并精通这些函数是成为...
- **5.1.7 包**:包是 PL/SQL 中的组织单元,用于组织相关的类型、变量、常量、过程和函数等。 - **5.1.8 编程实践**:包括最佳实践和常见问题解决方案等。 通过上述知识点的介绍,我们可以看到 Oracle SQL 不仅仅...
1. PL/SQL基础:PL/SQL是Oracle特有的结构化查询语言,由三部分组成:声明部分(DECLARATION)、执行部分(EXECUTION)和异常处理部分(EXCEPTION)。声明部分用于定义变量、游标和过程;执行部分包含SQL语句和控制...
2. **组成元**:PL/SQL的基本组成元素包括变量、常量、过程、函数、游标、异常、控制结构(如循环、条件语句)等。理解这些元素的用法是编写PL/SQL程序的关键。 3. **游标**:游标是PL/SQL中处理单行记录的重要工具...
PL/SQL提供了多种流程控制结构,如IF-THEN-ELSIF-ELSE、CASE、WHILE、FOR循环以及GOTO语句。这些结构使得程序可以根据条件执行不同的代码路径。 **SQL操作** PL/SQL可以直接嵌入SQL语句,进行数据的增删改查。例如...
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...
本PDF文档总结了Oracle数据库SQL的基础知识,适用于初学者进行自我学习或内部培训。 1. **基本语法** SQL语法是所有操作的基础,包括创建、查询、更新和删除数据。在Oracle中,SQL语句遵循一定的格式和规则,例如...
`DECODE`函数是Oracle中的一种条件判断函数,可以用来实现类似于`CASE`语句的功能。这里展示了几种不同的用法,例如根据某个字段的值返回不同的结果。 4. **数据备份与恢复** - MySQL: ```sql mysqldump -u ...