charIndex与like的使用方法

商帝国咨询头像

阅读 13707 | 分类:文章

CHARINDEX ( expression1 , expression2 [ , start_location ] )
CHARINDEX 仅在 expression1 和 expression2 都为 NULL 时返回 NULL 值
如果在 expression2 内没有找到 expression1,则 CHARINDEX 返回 0。



三种的不同结果:
(一)select articleid from article where classid=120 and nkey='消费电子'
返回12条记录

(二)select articleid from article where classid=120 and charindex(','+'消费电子'+',',','+nkey+',')>0
返回8条记录

(三)select articleid from article where classid=120 and ','+'消费电子'+','=','+nkey+','
返回10条记录

原因:
1. nkey='消费电子'的情况, 即使 nkey 的值为'消费电子 ', 条件也是成立的.
2. charindex(','+'消费电子'+',',','+nkey+',')>0 这个是包含关系.
3. ','+'消费电子'+','=','+nkey+',' 这个是完全匹配关系.

示例:

DECLARE @t TABLE(id int identity,nkey varchar(10))
INSERT @t SELECT '消费电子'
UNION ALL SELECT '消费电子 '
UNION ALL SELECT ',消费电子,'

select * from @t where nkey='消费电子'
/**//*-- 结果
id nkey
----------- ----------
1 消费电子
2 消费电子
--*/

select *, ','+'消费电子'+',' from @t where charindex(','+'消费电子'+',',','+nkey+',')>0
/**//*-- 结果
id nkey
----------- ---------- ----------
1 消费电子 ,消费电子,
3 ,消费电子, ,消费电子,

(2 行受影响)
--*/

select * from @t where ','+'消费电子'+','=','+nkey+','
/**//*-- 结果
id nkey
----------- ----------
1 消费电子

(1 行受影响)
--*/




方法A﹕select * from Ta where c1 like 'XYZ%' --索引起作用了
方法B﹕select * from Ta where charIndex('XYZ',c1)>0 --索引沒起作用

这里方法A比方法B要快

示例--找到带有回车的元素项:

select top 10 charindex(CHAR(13),col), * from table_1
where charindex(CHAR(13),col)> 0

留言区(共0条)

暂无留言,快来抢占沙发~
作者声明:非原创
平台声明:文章及评论仅代表作者本人观点,五略商书系信息发布平台,仅提供信息存储空间服务,如有侵权,请联系13521509118。转载请注明作者和出处:转自五略商书m.shangdiguo.com,作者商帝国咨询!