MYSQL正则校验是否是数字
时间: 2023-05-21 21:00:45 浏览: 275
可以使用正则表达式来校验一个字符串是否是数字,MYSQL中可以使用REGEXP关键字来进行正则匹配。以下是一个示例查询:
SELECT * FROM table_name WHERE column_name REGEXP '^[0-9]+$';
这个查询会返回column_name列中所有只包含数字的行。正则表达式'^[0-9]+$'表示从字符串开头到结尾都只包含数字。
相关问题
MYSQL正则校验是否是小数
可以使用正则表达式来校验是否是小数,例如:
^[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)$
这个正则表达式可以匹配正负小数,其中:
^ 表示匹配字符串的开始位置
[+-]? 表示可选的正负号
([0-9]+([.][0-9]*)?|[.][0-9]+) 表示匹配整数部分和小数部分,可以是整数、小数或只有小数部分
[0-9]+([.][0-9]*)? 表示整数部分和可选的小数部分
|[.][0-9]+ 表示只有小数部分
$ 表示匹配字符串的结束位置
如果要在 MySQL 中使用这个正则表达式,可以使用 REGEXP 运算符,例如:
SELECT '123.45' REGEXP '^[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)$';
这个查询会返回 1,表示匹配成功。如果要匹配失败的情况,可以使用 NOT REGEXP 运算符。
mysql 正则校验身份证
可以使用MySQL的正则表达式函数REGEXP来校验身份证号码是否符合规则。下面是一个示例查询语句,其中card为身份证号码所在的列名:
```mysql
SELECT * FROM table WHERE card REGEXP '[0-9]{18}|[0-9]{17}X|[0-9]{15}'
```
这个正则表达式可以匹配18位、17位带X、15位的身份证号码。如果要根据具体的校验规则进行校验,可以使用多个正则表达式进行组合。
另外,如果需要自定义校验规则,可以先创建一个身份证系数表,然后使用MySQL的函数进行校验。具体步骤如下:
1. 创建身份证系数表,包括省份代码、系数、校验码等字段。
2. 使用SUBSTR函数获取身份证号码中的各个字段,例如生日、性别等。
3. 使用身份证系数表中的系数和校验码计算出校验结果。
4. 将计算结果与身份证号码的最后一位进行比较,如果一致则校验通过。
阅读全文