首页
学习
活动
专区
圈层
工具
发布

mysql正则表达式 取反

基础概念

MySQL中的正则表达式是一种强大的文本匹配工具,允许你使用模式来搜索、替换或提取字符串中的数据。取反(NOT)操作符用于否定一个条件,即选择不符合特定条件的记录。

相关优势

  1. 灵活性:正则表达式提供了丰富的模式匹配功能,可以处理复杂的文本搜索需求。
  2. 效率:对于大量数据的文本搜索,使用正则表达式可以显著提高查询效率。
  3. 可读性:虽然正则表达式有时看起来复杂,但它们提供了清晰的模式定义,便于理解和维护。

类型

MySQL支持两种类型的正则表达式:

  1. 基本正则表达式:使用REGEXP操作符。
  2. 扩展正则表达式:使用RLIKE操作符。

应用场景

正则表达式在MySQL中的应用非常广泛,包括但不限于:

  • 数据验证:确保输入数据符合特定格式。
  • 数据清洗:从文本中提取特定信息。
  • 数据搜索:根据复杂模式查找记录。

取反操作

在MySQL中,你可以使用NOT关键字与正则表达式结合使用,以实现取反操作。例如:

代码语言:txt
复制
SELECT * FROM table_name WHERE NOT column_name REGEXP 'pattern';

这条语句将返回所有column_name不符合pattern的记录。

示例代码

假设我们有一个名为users的表,其中有一个字段email,我们想要查找所有不以example.com结尾的电子邮件地址:

代码语言:txt
复制
SELECT email FROM users WHERE NOT email REGEXP 'example.com$';

在这个例子中,$是一个正则表达式的锚点,表示字符串的结尾。

遇到的问题及解决方法

问题:为什么我的正则表达式取反不起作用?

原因

  1. 正则表达式错误:确保你的正则表达式模式是正确的。
  2. 操作符使用错误:确保你使用了NOT关键字,并且与正则表达式操作符(如REGEXP)正确结合。
  3. 数据类型不匹配:确保你要搜索的字段是文本类型。

解决方法

  1. 验证正则表达式:使用在线正则表达式测试工具验证你的模式是否正确。
  2. 检查SQL语句:确保SQL语句的语法正确,并且NOT关键字放在正确的位置。
  3. 调试查询:使用EXPLAIN关键字查看查询计划,确保MySQL正确解析了你的查询。

参考链接

通过以上信息,你应该能够理解MySQL正则表达式的取反操作,并能够在实际应用中正确使用它。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

取反!和按位取反~的区别

http://blog.csdn.net/pipisorry/article/details/36517411 按位取反“~”:按位取反1变0,0变1 逻辑非“!”...:逻辑取反, false变true,true变false,在C中,只要不是0就是真 —————————————————————————————————————————— 所以 !...5值是0 ~按位取反 5二进制00000101,取反11111010,代表-6 所以~5值-6 ~是按位取反,例如整数3,二进制形式是 00000000000000000000000000000011...,按位取反后就是 11111111111111111111111111111100 !...和~的结果值才是一样的 所有正整数的按位取反是其本身+1的负数 所有负整数的按位取反是其本身+1的绝对值 零的按位取反是 -1 ref: http://blog.csdn.net/pipisorry

2.6K20
  • c按位取反运算符_取反和按位取反

    大家好,又见面了,我是你们的朋友全栈君 介绍 二进制是计算机运行和存储数据的基础,按位取反(以下称“取反”)也就是基于二进制进行的一个操作。所不同的是,在完成按位取反之后,还需要转换为“原码”。...(人类可能无法接受二进制表示而更倾向于十进制) 正数取反 取反就是将二进制表示的数字中的0变为1, 1变为0。...《2》如果最高位为1则表示的就是负数:先将已取反的数减去1,在对差进行取反(注意:保留最高位不变),最后加上一个负号。...负数取反 以-10为例1.先将-10取绝对值10, 10的二进制为 0000 10102.将0000 1010用补码表示:(对于负数的补码:将其对应正数的二进制取反后,加1)即为1111 0101+1...=1111 01103.将补码按位取反得 0000 10014.将反码转换为原码(参考上一节,步骤4《1》):得 0000 1001所以-10按位取反后为9 参考资料 按位取反的步骤和原理 补码 –

    2.3K20

    按位取反怎么运算_按位取反运算

    首先搞懂 “反码”,“取反”,“按位取反(~)”,这3个概念是不一样的。...取反:0变1,1变0 反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0) 按位取反(~): 这将是下面要讨论的。...————————————————————————————————- 弄懂了上述情况后,按位取反如何计算就好办了 假设要对正数9按位取反——> (~9),计算步骤如下, 取原码 0000 1001, 取反码...——> (~5),计算步骤如下 原码,反码,补码皆为 0000 0101 对其取反 1111 1010(符号位一起进行取反) 取反码:1000 0101(符号位不变,其余各位求反) 取补码:1000...所有正整数的按位取反是其本身+1的负数 2. 所有负整数的按位取反是其本身+1的绝对值 3.

    3.2K20

    按位取反操作_按位取反末尾加一

    首先~是取反操作,计算机存储时是按照补码存储。...~1 = -2 计算步骤: 1的二进制表示——————————–0000 0001 按位取反—————————————-1111 1110 (计算机以补码形式存储,所以要求11111110的补码...) 求补码——————————————-1000 0010(11111110除符号位,其他位取反加一) 因此 ~1 =-2 再看负数取反操作 ~(-5)= 4 -5 的二进制表示 ——————————...———–1000 0101 (求补码) -5的补码 —————————————————1111 1011 按位取反 —————————————————0000 0100 (等于4) 正整数的补码还是正整数的二进制表示...,负整数的补码除符号位其他位取反加一,计算机内都以补码的形式存储 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170463.html原文链接:https://javaforall.cn

    1.6K20

    按位取反计算_二进制按位取反怎么算

    (按位取反)运算的理解: 按照我平时的理解,当我使用~按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果(这点没问题) 例如,假如我的计算机是...知道一个数的补码,要求其值的方法是:首先看符号位也就是最左的一位,如果是1代表是负数(-)如果是0代码是正数(+),然后对该值取反再+1,得到其源码。...例如本例中得到的 1111 1111 1111 1111 1111 1111 1111 1010,其符号位(最左一位)是1,表明它表示的是负数,欲求其源码,需先对其取反,然后再加1:0000 0000...以上便是对~按位取反运算以及负数的二进制表示的理解,不难发现,在求源码的时候,要将补码进行取反后再加1,然而这个补码原本就是之前由~运算时,对原来的操作数通过~按位取反而得来的,所以,此时在求该补码的源码时的取反操作...因此,可以总结出~按位取反的计算结论是:~n = -(n+1) 例如本例中,~5 = -(5+1),即~5 = -6 ——————— 出處 js取整 ~是按位取反运算,~~是取反两次 在这里~~

    1.8K30

    按位取反怎么运算_按位取反在线计算器

    一、首先二进制在计算机的内存中是以补码的形式存储 二、正数的补码=原码=反码, 负数的反码=原码的取反(二进制数的符号位除外,一般来说在二进制的左边的最高位) 补码=反码+1 三、按位取反怎么算...按位取反:二进制的每一位都取反(符号位+数据位) 公式法: ~x=-(x+1) 举两个例子:~11=-(11+1)=-12 ~(-11)=10 公式法的内部是如何计算的呢: 以~11为例:...~11的计算步骤: 计算11的补码 转二进制:0 1011 计算补码:0 1011 按位取反:1 0100 (按位取反是在这进行的,即补码的形式进行按位取反) 注意:这里是补码 将转为原码: 取其反码...因为补码是负数):1 1011 末位加一:1 1100 符号位为1是负数,即-12 以~(-11)为例: ~(-11)的计算步骤: 计算-11的补码 转二进制:1 1011 计算补码:1 0101 按位取反...:0 1010 (按位取反是在这进行的,即补码的形式进行按位取反) 注意:这里是补码 将转为原码: 正数补码就是原码:0 1010 符号位为0是正数,即10 发布者:全栈程序员栈长,转载请注明出处:https

    3.5K40

    MySQL 正则表达式

    在前面的章节我们已经了解到MySQL可以通过 LIKE ...% 来进行模糊匹配。 MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。...如果您了解PHP或Perl,那么操作起来就非常简单,因为MySQL的正则表达式匹配与这些脚本的类似。 下表中的正则模式可应用于 REGEXP 操作符中。 模式 描述 ^ 匹配输入字符串的开始位置。...实例 了解以上的正则需求后,我们就可以根据自己的需求来编写带有正则表达式的SQL语句。...name REGEXP '^st'; 查找name字段中以'ok'为结尾的所有数据: mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$...'ok'字符串结尾的所有数据: mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

    1.1K00

    MySQL 正则表达式详解

    一.介绍 正则表达式用来描述或者匹配符合规则的字符串。...它的用法和like比较相似,但是它又比like更强大,能够实现一些很特殊的规则匹配;正则表达式需要使用REGEXP命令,匹配上返回"1"匹配不上返回"0",默认不加条件REGEXP相当于like '%%...注意^符合只有在[]内才是取反的意思,在别的地方都是表示开始处匹配  注意:REGEXP 前的匹配字符作为一个整体 mysql> SELECT  'a' REGEXP '[^abc]'; +------...匹配0个或者1个a mysql> SELECT 'stb' REGEXP '.ta?b'; +----------------------+ | 'stb' REGEXP '.ta?...--------------+ |                  0 | +---------------------+ row in set (0.00 sec)  注意:^符合只有在[]内才是取反的意思

    1.1K30
    领券