MySQL中的字符串比较函数

2016-02-19 16:07 1 1 收藏

想要天天向上,就要懂得享受学习。图老师为大家推荐MySQL中的字符串比较函数,精彩的内容需要你们用心的阅读。还在等什么快点来看看吧!

【 tulaoshi.com - 编程语言 】

  根据,MySQL 会自动将数字转化为字符串,反之亦然。

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

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

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’, 必须将其写成 ‘’。而若要查找 ‘’, 则必须将其写成 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() 使用当前字符集。这使得默认的比较区分大小写,当操作数中的一个或两个都是二进制字符串时除外。

来源:http://www.tulaoshi.com/n/20160219/1611090.html

延伸阅读
FillString函数有两个参数,一个是用来重复填充的字符,另一个是填充后的字符串长度。然后它返回填充后的字符串,重复次数由填充字符的个数和填充后字符串长度决定。 该函数建立一个循环,循环次数基于所要求的字符串长度。循环步长有参数Value(即用来重复填充的子字符串)的长度决定。该函数把参数Value作为工作字符串,重复后按所要...
Delphi中的字符串 ——摘自网络 一:各种字符串  字符串是Object Pascal所有数据类型中最有用的类型。许多函数以字符串为传递参数。由于在Delphi中字符串的定义和使用有各种方式,包括Pascal中典型的字符串(String),Delphi支持的长字符串(ANSIString),类似于C语言的字符数组(Array of Char),指向字符的...
批量替换的具体语法是: 代码如下: UPDATE 表名 SET 指定字段 = replace(指定字段, '要替换的字符串', '想要的字符串') WHERE 条件; 如果你想把 article 表中 ID 小于5000的记录,content 字段中“解决”替换成“解放”,那么语法就是: 代码如下: UPDATE article SET content = replace(content, '解决', '解放') WHERE ID500...
MFC中有几个字符串操作函数很有用,但有的在MSDN中都查不到,因为MSDN没有公布。下面我们来看看它们的用法和声明及定义等。 // 功能 : 格式化字符串 // 参数 : rString - 输出参数,格式化后的字符串将保存在此字符串中 !-- frame contents -- !-- /frame contents -- // nIDS - 将进行替换操作的格式字符串...
如下表:AggregationTableIdName1赵2钱1孙1李2周 如果想得到下图的聚合结果 IdName1赵孙李2钱周 利用SUM、AVG、COUNT、COUNT(*)、MAX 和 MIN是无法做到的。因为这些都是对数值的聚合。不过我们可以通过自定义函数的方式来解决这个问题。 1.首先建立测试表,并插入测试数据: 代码如下: create table AggregationTable(Id int, [Name] varcha...

经验教程

235

收藏

86
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部