sql server charindex函数和patindex函数详解(转) - 苍马之子
作者:admin来源:网络整理时间:2017-11-14

     charindex和patindex行使职责一直用来在一节使具有特征中搜索使具有特征或使具有特征串。倘若搜索使具有特征使具体化要搜索的使具有特征,此后这两个行使职责送还独身非零必须的。,此必须的是在搜索CH中要搜索的使具有特征数。。patindex行使职责供养运用通配符来停止搜索,但是,charindex不供养通配符。接下来,咱们一个接一个剖析了这两种效能。。

总额运用charindex行使职责
该charindex行使职责送还使具有特征或使具有特征串的幼芽席位。该charindex行使职责转学方式列举如下:
charindex ( expression1 , 2 [ , start_location ] )
expression1是要到2中寻觅的使具有特征中,start_location是charindex行使职责开端在2中找expression1的席位。
该charindex行使职责送还独身必须的,送还的必须的是使具有特征串中要找到的使具有特征串的席位。。倘若未瞥见charindex查找使具有特征串,此后行使职责必须的0。让咱们看一下以下行使职责命令工具的比分:
charindex(sql, microsoft sql 服侍)
很行使职责命令将送还微软 sql 服侍中SQL的幼芽席位,在很案件中,charindex行使职责送还的S在微软 sql 服侍打中席位11。
接下来,让咱们在charindex直截了当地一下:
charindex(, microsoft sql server 2000)

      在很案件中,charindex送还零,由于使具有特征串 缺席微软 sql 在服侍中找到。

      接下来经过两个案件视域一眼总额运用charindex行使职责来处理现实的t-sql成绩。

      第独身案件,想象您要显示northwind数据库customer表前5行使接触列的last name。这是前5行数据。

           contactname

           ------------------------------ 

           maria anders

           ana trujillo

           antonio moreno

           thomas hardy

           christina berglund

     你可以关照它,自定义称号使具体化客户的原始的 名字和充分地 name,它们被独身太空隔开。。我用charindx行使职责来决定心爱的的太空席位。经过这种方式,咱们可以剖析ContactName列的太空席位,因而咱们仅仅显示这一栏的充分地当事人。 name命运注定。这是充分地的客户表显示5行数据 称号记载!

      select top 5 substring(contactname,charindex( ,contactname)+1 ,len(contactname)) as [上 称号] from s

下面是很命令输入的比分。

           last name

           ------------------------------ 

           anders

           trujillo

           moreno

           hardy

           berglund

      charindex行使职责找到原始的 名字和充分地 太空经过的名字,因而substring行使职责可以独立的ContactName列,因而除非充分地独身 选择称号。我要补充部分1的必须的的charindex行使职责送还,这么,充分地 称号不以空格起始。

      在次要的例,如你如,计算记载,使具体化假设的使具有特征的领域打中什么都可以记载。charindex行使职责可以附近的地处理你的成绩。计算表中addresses领域中使具体化单词road或他的缩写rd的记载数,选择声明类似于。:

       select count(*) from s

       where charindex(rd,地址) > 0 or charindex(road,地址)> 1

方式运用patindex行使职责

      patindex行使职责送还使具有特征或使具有特征串在另独身使具有特征串或表达打中幼芽席位,patindex行使职责供养搜索使具有特征串中运用通配符,这使patindex行使职责在起作用的变更的搜索使具有特征串很数数。patindex行使职责的命令列举如下:

      patindex ( %pattern% , expression )

      花样是您要搜索的使具有特征串。,表达是独身搜索使具有特征串。。一般而言,表达是表打中独身领域。,花样需求在前后使佩带像章为%。,除非你在和约的前面或前面找粗绳。。

      作为charindex行使职责相同的人,patindex行使职责送还搜索使具有特征串在被搜索使具有特征串打中幼芽席位。假设有这么独身patindex行使职责:

      patindex(%bc%,ABCD)

      很patindex行使职责送还的比分是2,这作为charindex行使职责相同的人。在这一点上的%使佩带像章通知patindex行使职责去找使具有特征串“bc”,怨恨在搜索前和随后有总额个使具有特征!

     倘若你想赚得搜索使具有特征串是由独身假设的的使具有特征串开端,您可以保持不变先前的%标志。。的patinded效能应该是这么写的:

      patindex(ab%,ABCD)

     此命令的比分送还1。,表现搜索的使具有特征串AB在搜索使具有特征串AB中找到。。

      运用通配符可以编者独身更复杂的搜索使具有特征串挑剔独身简略的案件。倘若要判别使具有特征串倘若使具体化字母a和z,更多号码,这parindex效能命令可以相貌像这么:

      patindex(%[a,z,0-9]%[a,z,0-9]%[a,z,0-9]%,xyzabc123)

      请注意到,本例打中搜索使具有特征命运注定运用了弘量的发表行使职责。。观察sql 服侍联机书简可以吸引向前发表加标签于的更多传达。。接下来,咱们用两个案件视域patindex和select怎样混合起来运用。

      想象您怀有某种意图或目的找出表中description领域中是使具体化单词“bread”或“bread”的什么都可以记载,因而选择声明可以是这么的:

        select description from

        where patindex(%[b,b]read%,特性描述) > 0

     在在这一点上我运用通配符来使杰出大写和小写字母的B。当我在notthwind数据库工具本子,吸引以下比分:

           description

           --------------------------------------------------------

           desserts, candies, and sweet breads

           breads, crackers, pasta, and cereal

      这是用另独身通配符来查找稍许地记载的示例。。很示例总额选择下面的查询比分?,特性描述领域的次要的个字母挑剔E的记载。。

                   select description from      

                   where patindex(%[b,b]read%,特性描述) > 0  

                   and patindex(_[^e]%,特性描述) = 1        

      经过在必要的声明中扩张独身运用^通配符的patindex行使职责,咱们可以过滤掉奶油冻。, candies, and sweet 面包这张录音。下面的查询除非条款记载。。

           description

           --------------------------------------------------------

           breads, crackers, pasta, and cereal 

总结

      您如今可以瞥见charindex和patindex搜索使具有特征串时的区别了吧。patindex行使职责供养运用通配符,它可以用在数量庞大的数量庞大的辨别的以一定间隔排列。。和charindex不克不及。松劲你自己的状况,这两个行使职责在sql中一套外衣您 服侍打中使具有特征串搜索、把持、剖析责备常有用的的。。

热点关键词
本站澳门彩票 - 澳门彩票公司 - 澳门彩票有限公司,所有信息和图片来自网络,不代表本站观点!
Copyright © 2016-2017 澳门彩票 - 澳门彩票公司 - 澳门彩票有限公司 版权所有    京ICP备12047666号-1