MySQL基础知识---------字符串比较函数

来源:互联网 发布:centos安装mldonkey 编辑:程序博客网 时间:2024/05/29 02:19

mysql> SELECT 1+'1';

        -> 2

mysql> SELECT CONCAT(2,' test');

        -> '2 test'

若想要将数字明确地转化为字符串,可使用 CAST() CONCAT()函数:

mysql> SELECT 38.8, CAST(38.8 AS CHAR);

        -> 38.8, '38.8'

mysql> SELECT 38.8, CONCAT(38.8);

        -> 38.8, '38.8'

CAST() 比较可取。.

若已经对一个字符串函数给定一个二进制字符串作为参数, 则所得到的结果字符串也是一个二进制字符串。一个转化为字符串的数字被作为二进制字符串对待。这仅会对比较结果产生影响。

一般而言若字符串比较中任意一个表达式是区分大小写的,则执行比较时也区分大小写。 

  • expr LIKE pat [ESCAPE 'escape-char']

模式匹配,使用SQL简单正规表达式比较。返回1 (TRUE)  0 (FALSE)。 若 expr 或 pat 中任何一个为 NULL,则结果为 NULL

模式不需要为文字字符串。例如,可以被指定为一个字符串表达式或表列。

在模式中可以同LIKE一起使用以下两种通配符:

字符

说明

%

匹配任何数目的字符,甚至包括零字符 

_

只能匹配一种字符

mysql> SELECT 'David!' LIKE 'David_';

        -> 1

mysql> SELECT 'David!' LIKE '%D%v%';

        -> 1

若要对通配符的文字实例进行检验可将转义字符放在该字符前面。如果没有指定 ESCAPE字符则假设为‘\’。

字符串

说明

\%

匹配一个  %’字符

\_

匹配一个 ‘_’ 字符

mysql> SELECT 'David!' LIKE 'David\_';

        -> 0

mysql> SELECT 'David_' LIKE 'David\_';

        -> 1

要指定一个不同的转义字符,可使用ESCAPE语句:

mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|';

        -> 1

转义序列可以为空,也可以是一个字符的长度。 从 MySQL 5.1.2开始如若 NO_BACKSLASH_ESCAPES SQL模式被激活则该序列不能为空。

以下两个语句举例说明了字符串比较不区分大小写,除非其中一个操作数为二进制字符串:

mysql> SELECT 'abc' LIKE 'ABC';

        -> 1

mysql> SELECT 'abc' LIKE BINARY 'ABC';

        -> 0

MySQL, LIKE 允许出现在数字表达式中。 (这是标准SQL LIKE 的延伸)

mysql> SELECT 10 LIKE '1%';

        -> 1

注释: 由于 MySQL在字符串中使用 C转义语法(例如用‘\n’代表一个换行字符),在LIKE字符串中,必须将用到的‘\’双写。例如, 若要查找 ‘\n必须将其写成 ‘\\n’。而若要查找 ‘\则必须将其写成 it as \\\\;原因是反斜线符号会被语法分析程序剥离一次,在进行模式匹配时,又会被剥离一次,最后会剩下一个反斜线符号接受匹配。

  • expr NOT LIKE pat [ESCAPE 'escape-char']

这相当于 NOT (expr LIKE pat [ESCAPE 'escape-char'])

  • expr NOT REGEXP pat expr NOT RLIKE pat

这相当于NOT (expr REGEXP pat)

  • expr REGEXP pat expr RLIKE pat

执行字符串表达式 expr 和模式pat 的模式匹配。该模式可以被延伸为正规表达式。正规表达式的语法在附录G:MySQL正则表达式中有详细讨论。若expr 匹配 pat则返回 1; 否则返回0。若 expr 或 pat 任意一个为 NULL, 则结果为 NULL RLIKE REGEXP的同义词作用是为mSQL 提供兼容性。

模式不需要为文字字符串。例如,可以被指定为一个字符串表达式或表列。

注释由于在字符串中, MySQL使用 C 转义语法 (例如用‘\n’来代表换行字符 ),REGEXP字符串中必须将用到的‘\’ 双写。

REGEXP 不区分大小写除非将其同二进制字符串同时使用。

mysql> SELECT 'Monty!' REGEXP 'm%y%%';

        -> 0

mysql> SELECT 'Monty!' REGEXP '.*';

        -> 1

mysql> SELECT 'new*\n*line' REGEXP 'new\\*.\\*line';

        -> 1

mysql> SELECT 'a' REGEXP 'A', 'a' REGEXP BINARY 'A';

        -> 1  0

mysql> SELECT 'a' REGEXP '^[a-d]';

        -> 1

在确定字符类型时,REGEXP  RLIKE 使用当前字符集 (默认为cp1252 Latin1 )。 警告:这些操作符不支持多字节字元。

  • STRCMP(expr1,expr2)

若所有的字符串均相同,则返回STRCMP(),若根据当前分类次序,第一个参数小于第二个,则返回  -1,其它情况返回 1 

mysql> SELECT STRCMP('text', 'text2');

        -> -1

mysql> SELECT STRCMP('text2', 'text');

        -> 1

mysql> SELECT STRCMP('text', 'text');

        -> 0

在执行比较时,STRCMP() 使用当前字符集。这使得默认的比较区分大小写,当操作数中的一个或两个都是二进制字符串时除外。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一到晚上睡不着怎么办 明天考试听力差怎么办 天天晚上睡不着觉怎么办 因紧张睡不着觉怎么办 房卡找不到了怎么办 马代不会英文怎么办 剩下的蒸米饭怎么办 临时牌照违法了怎么办 打12345不管用怎么办 省政府改变了中央文件怎么办 应聘时学历不够怎么办 做导游学历不够怎么办 市长热线打不通怎么办 12315网站不受理怎么办 法律文书生效前转后财产怎么办 打12345投诉没用怎么办 单位医保停了怎么办 iphonex开不了机怎么办 会计证三年没检怎么办 银行工作人员态度不好怎么办 生殖保健服务证怎么办 关机后自动开机怎么办 大连卖房户口怎么办 在警务室被辅警骂了怎么办 上海微信怎么办居住证 公共自行车卡消磁怎么办 港澳通行证到期了怎么办 徐海路大桥对面怎么办 没有买公务机票怎么办 电脑黑屏怎么办重启也没有用 航空公司原因航班取消怎么办 政府采购2次废标怎么办 车卖给别人车牌怎么办 医用耗材中标后怎么办 国六标准国五车怎么办 年审标志丢了怎么办 大专不过统招线怎么办 雅安停天然气了怎么办 调档函过期了怎么办 临时工想涨工资怎么办 辞职了职称公需课怎么办