您的位置:网站首页 > 中华美食 > 正文

SQL Server深入解读:特殊函数盘点

类别:中华美食 日期:2019-3-22 10:02:57 人气: 来源:
 SQL Server深刻解读:特别函数盘点 

    【 资讯】在SQL Server 的应用过程中,发明几个很有效,但不太常用(或细节不太清楚)的函数(存储过程):

  isnumeric,isdate,patindex,newid,collate,sp_executesql,checksum

  遂记下,以备日后查询。不敢独享,与君共之。有效且看,无用略过。

  1> isnumeric( expression )

  -- 返回值 1 | 0,断定是否是数字类型。

  数值类型包含(int、bigint、smallint、tinyint、numeric、money、smallmoney、float、decimal、real)

  示例:

select * from tablename  where isnumeric(columnname)<> 1;  go

 

  以上示例应用 isnumeric 返回所有非数值的数据行。

  2> isdate( expression )

  -- 假如 expression 是有效的 date、time 或 datetime 值,则返回 1;不然返回 0。

  示例:

if isdate('2009-05-12 10:19:41.177') = 1  print '有效的日期'  else  print '无效的日期'

 

  上面的示例应用 isdate 测试某一字符串是否是有效的 datetime。

  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'oracle教程全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。)

  --返回: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 fmysql教程是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。n_helpcollations()

  6> sp_executesql 存储过程

  建议您在履行字符串时,应用 sp_executesql 存储过程而不要应用 execute 语句。

  因为此存储过程支撑参数调换,是以 sp_executesql 比 execute 的功能更多;

  因为 sql server 更可能重用 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

  */

  上面示例演示了SQL语句的拼接。

  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后比拟,就是说两个表里有没有行完全相当的。

http://www.fgedu.net.cn

关键词:
0
0
0
0
0
0
0
0
下一篇:没有资料

相关阅读

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

合作伙伴: ysjqe.cn

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 人才招聘 - 帮助

版权声明:本站信息来源于网络 不代表本站观点,如果侵犯到你的权利请联系站长删除

CopyRight 2002-2012 技术支持 FXT All Rights Reserved