mysql怎么用like检索字段中带有数字的语句?

如题所述

MySQL LIKE 语法

LIKE 运算符用于 WHERE 表达式中,以搜索匹配字段中的指定内容,语法如下:

WHERE column LIKE pattern
WHERE column NOT LIKE pattern

在 LIKE 前面加上 NOT 运算符时,表示与 LIKE 相反的意思,即选择 column 不包含 pattern 的数据记录。

LIKE 通常与通配符 % 一起使用,% 表示通配 pattern 中未出现的内容。而不加通配符 % 的 LIKE 语法,表示精确匹配,其实际效果等同于 = 等于运算符。

MySQL LIKE 大小写

MySQL LIKE 匹配字符时,默认是不区分大小写的,如果需要在匹配的时候区分大小写,可以加入 BINARY 操作符:

SELECT * FROM user WHERE username LIKE BINARY '%azz%'SELECT * FROM user WHERE username LIKE BINARY '%aZZ%'

BINARY 操作符表示按照二进制进行比较,因此加上该操作符后,便可以严格区分大小写,因此以上两条 SQL 查询出来的内容是不同的。

MySQL LIKE 中文字符匹配

由于数据存储编码问题,在某些情况下,MySQL 进行 LIKE 搜索返回的数据中除了符合要求的数据外,往往还会返回许多不相干的数据。这时候也需要在 LIKE 后面加上 BINARY 操作符以进行二进制比较:

SELECT * FROM user WHERE username LIKE BINARY '%小%'

提示

当在 LIKE 匹配时加上 BINARY 操作符后,则会严格区分英文大小写。因此当检索的内容是中英文混合且需要忽略英文大小写的时候,就会遇到麻烦。为解决此问题,需要引入 MySQL 中的 UPPER() 与 CONCAT() 函数:

    UPPER():将英文字符串变大写,同UCASE()

    CONCAT():将多个字符串连接成一个字符串

    语法如下:

    UPPER(str)
    CONCAT(str1,str2,...)

    因此当我们要进行中英文混合匹配检索且要忽略英文大小写时,可以使用如下例所示的 SQL 语句:

    SELECT * FROM username WHERE UPPER(username) LIKE BINARY CONCATt('%',UPPER('a中文b'),'%')

    在该 SQL 中,将搜索的字段及检索的内容都进行大写转换后,再进行二进制匹配。

    LIKE 运算符的效率

    LIKE 运算符要对字段数据进行逐一扫描匹配,实际执行的效率是较差的,哪怕该字段已经建有索引(a% 这种方式会用到索引)。当数据量较大时,要尽可能的减少 LIKE 运算符的使用,也没有太多优化的余地。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-09
匹配IP:
select * from `domain` where domain REGEXP '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$';
二、正则模式
由MySQL提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。
扩展正则表达式的一些字符是:
“.”匹配任何单个的字符。(单字节字符)
一个字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的一个范围,使用一个“-”。“[a-z]”匹配任何小写字母,而“[0-9]”匹配任何数字。
“ * ”匹配零个或多个在它前面的东西。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。
正则表达式是区分大小写的,但是如果你希望,你能使用一个字符类匹配两种写法。例如,“[aA]”匹配小写或大写的“a”而“[a-zA-Z]”匹配两种写法的任何字母。
如果它出现在被测试值的任何地方,模式就匹配(只要他们匹配整个值,SQL模式匹配)。
为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。
为了说明扩展正则表达式如何工作,上面所示的LIKE查询在下面使用REGEXP重写:
为了找出以“三”开头的名字,使用“^”匹配名字的开始。
FROM [user] WHERE u_name REGEXP ‘^三’;
将会把u_name为 “三脚猫”等等以“三”开头的记录全找出来。
为了找出以“三”结尾的名字,使用“$”匹配名字的结尾。
FROM [user] WHERE u_name REGEXP ‘三$’;
将会把u_name为“张三”,“张猫三”等等以“三”结尾的记录全找出来。
你也可以使用“{n}”“重复n次”操作符重写先前的查询:
FROM [user] WHERE u_name REGEXP ‘b{2}$’;
注意:如果是中文字符,可能在使用时需要注意一下。

mysql怎么用like检索字段中带有数字的语句?
UPPER(str)CONCAT(str1,str2,...)因此当我们要进行中英文混合匹配检索且要忽略英文大小写时,可以使用如下例所示的 SQL 语句:SELECT * FROM username WHERE UPPER(username) LIKE BINARY CONCATt('%',UPPER('a中文b'),'%')在该 SQL 中,将搜索的字段及检索的内容都进行大写转换后,再进行二进...

如何在MySQL中使用LIKE子句获取特定字段包含特定字符的记录?
MySQL中的LIKE子句在SELECT语句中扮演着关键角色,允许我们根据特定模式搜索字段内容。它不同于等号(=),后者只匹配完全相同的值,而LIKE通过百分号(%)来表示任意字符,如同正则表达式的星号(*)。使用LIKE,我们可以查找例如以“jay”结尾的w3cschool_author字段记录。通用的SQL语法是这样的:SELECT字段列表 F...

MySQL中的LIKE查询技巧mysql中like查询
尽管LIKE语句最常用于文本匹配,但是我们也可以使用它来查询数字。要做到这一点,我们需要将数字强制转换为字符串。以下是一个示例:SELECT * FROM orders WHERE CAST(order_number AS CHAR) LIKE ‘123%’;这将返回所有订单号以’123’开头的行。请注意,使用CAST函数将数字转...

mysql怎么查询字符串中包含字符
一、使用LIKE关键字进行模糊查询 在MySQL中,要查询字符串中包含特定字符的记录,可以使用LIKE关键字结合通配符来实现模糊查询。二、通配符的使用 1. %:代表任意数量的字符,包括零个字符。2. _:代表一个字符。例如,如果要查询名字中包含“张”字的所有记录,可以使用如下SQL语句:SELECT *...

MySQL数据库如何查询包含某个词的数据mysql中包含某个词
name中包含“apple”单词的所有数据,并且根据相关性进行排序。总结 MySQL提供了多种方法查询包含某个词的数据,如LIKE、REGEXP和FULLTEXT操作符。因此,可以选择最适合自己需求的方法进行查询,提高查询效率。在实际应用中,还可以通过使用索引、调整查询语句等方法进一步优化查询性能。

mysql like查询语句
MySQL LIKE查询语句是一种强大的文本搜索工具,其基本语法是:在SELECT语句中,通过"FROM"指定数据表,利用"WHERE"子句中的"LIKE"关键字来筛选出符合特定模式的字段内容。例如:1. 当你需要查找所有以'Mc'开头的字符串时,使用LIKE 'Mc%',如'McBadden'这样的记录会被匹配。2. 如果你想找到所有以'...

mysql正则表达式rlike的使用方法mysql中rlike
(2)匹配区分大小写,如果需要忽略大小写,可以使用REGEXP_REPLACE替代RLIKE;(3)使用RLIKE进行模式匹配会影响查询性能,如果将其与其他查询语句组合使用,应该特别注意优化方式。5.总结 本文简要介绍了MySQL正则表达式RLIKE的使用方法和一些基本规则,希望对大家有所帮助。正则表达式是一种非常强大的文本...

mysql like用法
mysql语句中like用法:常见用法:搭配%使用,代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据:搭配使用代表仅仅一个字符的通配符,把上面那条查询语句中的%改为,会发现只能查询出一条数据。使用like模糊查询会导致索引失效,在数据量大的时候会有性能问题,尽量少以%或者_开头进行模糊查询...

MYSQL的like语句怎么检索多个列里面的值
多条件查询,可以这样子,where 表名.user likes "a%" or 表名.content likes "a%" or 表名.pubtime likes "a%"

mysql查询语句中like 的用法
1、常见用法:(1)搭配%使用 代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据:(2)搭配_使用 _代表仅仅一个字符的通配符,把上面那条查询语句中的%改为_,会发现只能查询出一条数据。2、使用like模糊查询会导致索引失效,在数据量大的时候会有性能问题 (1)尽量少以%或者_开头...

相似回答