返回首页
当前位置: 主页 > 开发手册 > 数据库 >

CHARINDEX对于SqlServer与instr对于access

时间:2010-12-29 00:34来源:互联网 作者:网络 点击:
正如题目而言,在SqlServer中要使用CharIndex,而在Access中则要使用instr函数
  

正如题目而言,在SqlServer中要使用CharIndex,而在Access中则要使用instr函数

CHARINDEX函数
返回字符或者字符串在另一个字符串中的起始位置。
CHARINDEX函数调用方法如下:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。
CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如CHARINDEX没有找到要找的字符串,那么函数整数“0”。

InStr 函数
返回某字符串在另一字符串中第一次出现的位置。
InStr 函数调用方法如下:
InStr([start, ]string1, string2[, compare])
参数
start
可选项。数值表达式,用于设置每次搜索的开始位置。如果省略,将从第一个字符的位置开始搜索。如果 start 包含 Null,则会出现错误。如果已指定 compare,则必须要有 start 参数。
string1
必选项。接受搜索的字符串表达式。
string2
必选项。要搜索的字符串表达式。
compare
可选项。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。如果省略,将执行二进制比较。

两个函数的性质非常效果一样就是搜索一个字符是否出现在另外一个字符串里面,前天要把一个网站的数据库从Access转换成Sql,查询部分老是出错显示无此函数,我郁闷搞了半天忽然想起以前用过CHARINDEX有这个功能,呼呼看来以后要细心了DateDiff函数在Access和Sql语句中调用也有区别!

具体Sql语句如下:

Access:
Select c.ContentID,c.Title,c.PostDate,c.Instro,c.Hits,c.ReplyNum,c.TrackBackNum,c.Content,c.Poster,c.KeyWords,a.classname,c.ClassID,c.useHTML,c.fileName FROM NSB_Class a INNER JOIN NSB_Content c ON c.ClassID = a.ClassID Where (c.Passed=1) And (c.KeyWords = 'sdaf' or Left(c.KeyWords,5) = 'sdaf,' or Right(c.KeyWords,5) = ',sdaf' or Instr(c.KeyWords,',sdaf,')>0) orDER BY c.ContentID DESC

Sql:
Select N.NewsID,N.Title,N.PostDate,N.Author FROM CSB_NewsClass A INNER JOIN CSB_News N ON N.ClassID = A.ClassID Where (N.Passed=1) And (N.KeyWords = '太行发动机' or Left(N.KeyWords,6) = '太行发动机,' or Right(N.KeyWords,6) = ',太行发动机' or CharIndex('太行发动机',N.KeyWords)>0) orDER BY N.NewsID DESC

来自:
http://hi.baidu.com/zhonghefu/blog/item/a1d821c650add9129d163de7.html

http://apps.hi.baidu.com/share/detail/1657555

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
最新评论 查看所有评论
发表评论 查看所有评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
推荐内容