日期:2014-05-16  浏览次数:20742 次

MySql小点心—2、常用的比较函数和比较操作符

1、比较操作符:

=  、 >、  <、  >=、 <=、 <>、 != 、 <=>

这里面就是知道下 <> 和 != 意义是一样的都是不等于的意思,看个人的喜好

<=> 是用于当比较的两边的值存在是空(NULL)的情况,这种情况有的时候会遇到,mysql提供这种方式的比较符,类似于"=",不同的是当两边要比较的数都为NULL的话它返回true(表示两边相等),如果其中有一边是NULL的话它返回为false(表示两边不相等)。如果是使用"="比较操作符,当两边任何一边有NULL的时候返回都是NULL。

2、比较函数

BETWEEN...AND :检测某个数是不是在某个范围内。 expr BETWEEN min AND max。对应的还有个NOT BETWEEN...AND,表示不再某个范围

IN() :检测某个数是不是在某些数里面。 expr IN (value,...)。对应的是NOT IN(),表示不在列出的数里面

INTERVAL(N,N1,N2,N3,...)返回N1、N2、.....中第一个比N大的索引,N1、N2...需要按大小排序号比如INTERVA(10,1,10,100,1000)这个函数返回2,100的索引为2

GREATEST():返回一组数的最大值 。对应的是LEAST():返回一组数的最小值。

IS :同布尔值判断,IS boolean_value ,这里需要注意的是boolean_value有三种 TRUE、 FALSE、 UNKNOWN,UNKNOWN对应于值为空的情况,比如NULL IS UNKNOWN则返回TRUE。同IS相反的是IS NOT,用法类似。

IS NULL:判断一个值是不是为空。在使用ODBC编程是这个IS NULL除了判断是否为空以为还有两个用途:

   1、如果 sql_auto_is_null 这个Mysql系统变量设置为1(默认为1),当插入一个AUTO_INCREMENT自动生成的值(自增长的值,系统自动会生成)之后,可以通过下面一条语句来得到之前插入的记录:

SELECT * FROM tbl_name WHERE auto_col IS NULL
这里tbl_name是表名称,auto_col对应于自增长的列名。得到的记录中那个自增长列所对应的值同我们调用LAST_INSERT_ID()得到的值是相同的。当然如果插入失败则上面的SELECT没有记录返回,当然如果sql_auto_is_null被设置为0 false则也不行。

   2、对应DATE或者DATETIME的数据格式对应的字段,并且字段设置为非空NOT NULL,可以通过IS NULL来查找“0000-00-00”这个特殊的日期,下面是代码:

SELECT * FROM tbl_name WHERE date_column IS NULL
这个主要考虑到ODBC里面不支持“0000-00-00”的一个日期值。

同IS NULL对应的是IS NOT NULL,使用类似。

STRCMP:比较两个字符,返回为-1、0、1这三种值。

LIKE:简单的模式匹配,这个是常被用到的功能。通常我们知道"%"代表任意多个字符,另外"_"代表一个字符。先看看LIKE的格式:

expr LIKE pat [ESCAPE 'escape_char']
这里后面的ESCAPE是指定转义符号。默认的ESCAPE(转义)符号是"\",如果需要使用“%”和“_”,默认情况下可以用"\%"和"\_"来表示;如果需要查找"\n",则需要搜索"\\n",如果需要查找"\",则需要搜索"\\\\",因为这里有两次的解析,一次是parser(文本黏贴器)生成的(就是如果expr里面有‘\’符号则黏贴器会把它转变为'\\'),一次是匹配的时候的(匹配的时候‘\\\\’就变为'\\'了)。

pat可以是字符串、字符串表达式,或者列名称。

LIKE也可以用在数字的表达式中,比如  10 LIKE '1%' 这个也是返回true

另外要注意的是如果expr 或者 pat 中有一个是NULL那么 LIKE将会返回 NULL

NOT LIKE 同 LIKE 类似