sqlserver 中charindex/patindex/like 的比较

2016-02-19 10:44 8 1 收藏

get新技能是需要付出行动的,即使看得再多也还是要动手试一试。今天图老师小编跟大家分享的是sqlserver 中charindex/patindex/like 的比较,一起来学习了解下吧!

【 tulaoshi.com - 编程语言 】

一、测试环境:

1。数据库:Sql Server 2008

2。测试表:15000记录,char类型主键,无其他索引

3。测试字段:ntext 类型,最大数据长度12000

二、测试语句:

1。select * from ProductTemp where ProductDesc like '%192.168.70.236%'

2。select * from ProductTemp where charindex('192.168.70.236',ProductDesc)0

3。select * from ProductTemp where patindex('%192.168.70.236%',ProductDesc)0

三、测试结果:

1。效率测试结果: charindex like patindex ,效率差大概20%

2。适用性测试结果:

1)charindex对于检索结果最大位移有要求,经测试,Sql2008中的ntext字段,位移不能超过3987,否则返回0;

2)patindex 和 like 无位移限制;

3)patindex 支持匹配表达式,可以应用正则;

4)like可以用'%oldstring%'进行模糊匹配;

5)charindex只能匹配固定字符串

来源:https://www.tulaoshi.com/n/20160219/1595623.html

延伸阅读
1、你可以用SQLCMD执行交互式动作,如: C:sqlcmdsqlcmd 1 SELECT name from sys.databases 2 GO 你也可以试着键入如下命令,现实服务器列表 1:ServerList SERVERS: WUYZ 1如果想看其他命令的使用,可以键入:Help /? 2、执行SQL脚本文件 你可以在SQLCMD命令上加入参数I来执行SQL脚本文件,例...
  在SQLServer中我们可以用over子句中来代替子查询实现来提高效率,over子句除了排名函数之外也可以和聚合函数配合。实现代码如下: 代码如下: use tempdb go if (object_id ('tb' ) is not null ) drop table tb go create table tb (name varchar (10 ), val int ) go insert into tb select 'aa' , 10 union all select 'aa...
然而,在SQL Server 2005中,我们可以用.NET家族的语言——主要是VB.NET和C#来编写存储过程(以及方法、触发器和其它组件)。让我们来熟悉一下关于编写存储过程新方法的5个常见问题。它们是非常值得我们探讨的。 1、为什么我们必须使用CLR模式来编写存储过程呢? 主要原因是速度。SQL CLR在很多方式下都运行较快:比如字符串处理,...
表sysdatabases:保存DBMS中数据库信息 select [name] from [sysdatabases] order by [name] 就能得到该DBMS中的数据库信息 表sysobjects:保存数据库中数据表信息 con.ChangeDatabase(DBName) select [id],[name] from [sysobjects] where [type]='u',con 就能得到该数据库的表...
证书同时包含公钥和密钥,前者用来加密,后者解密。SQL Server可以生成它自己的证书,也可以从外部文件或程序集载入。因为可以备份然后从文件中载入它们,证书比非对称密钥更易于移植,而非对称密钥却做不到。这意味着可以在数据库中方便地重用同一个证书。 注意:证书和非对称密钥同样的消耗资源。 我们看一组例子: 示例一、创建数据库证...

经验教程

857

收藏

69
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部