日期:2014-05-16 浏览次数:20807 次
1、比较操作符:
= 、 >、 <、 >=、 <=、 <>、 != 、 <=>
这里面就是知道下 <> 和 != 意义是一样的都是不等于的意思,看个人的喜好
<=> 是用于当比较的两边的值存在是空(NULL)的情况,这种情况有的时候会遇到,mysql提供这种方式的比较符,类似于"=",不同的是当两边要比较的数都为NULL的话它返回true(表示两边相等),如果其中有一边是NULL的话它返回为false(表示两边不相等)。如果是使用"="比较操作符,当两边任何一边有NULL的时候返回都是NULL。
2、比较函数:
BETWEEN...AND :检测某个数是不是在某个范围内。 expr
BETWEEN
min
AND max。
对应的还有个NOT BETWEEN...AND,表示不再某个范围
IN() :检测某个数是不是在某些数里面。
。对应的是NOT IN(),表示不在列出的数里面expr
IN (value
,...)
INTERVAL(
:返回N1、N2、.....中第一个比N大的索引,N1、N2...需要按大小排序号比如INTERVA(10,1,10,100,1000)这个函数返回2,100的索引为2N
,N1
,N2
,N3
,...)
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 类似