MySql 过滤查询(以字母开头,以数字开头,非数字开头,非字母开头)
【摘要】 我们知道,SQL Server中判断一个字段的值是否为数字可以用系统自带的ISNUMERIC()函数来处理,但是MySQL数据库中则没有这个(或者是没有一个直接判断是否是数字)的函数,但MySQL为我们提供了正则表达式的函数,所以我们可以用数字的正则表达式来处理有关判断字段值是否是数字的问题,具体的MySQL语句代码示例如下:SELECT * FROM TABLE_NAME WHERE CO...
我们知道,SQL Server中判断一个字段的值是否为数字可以用系统自带的ISNUMERIC()函数来处理,但是MySQL数据库中则没有这个(或者是没有一个直接判断是否是数字)的函数,但MySQL为我们提供了正则表达式的函数,所以我们可以用数字的正则表达式来处理有关判断字段值是否是数字的问题,具体的MySQL语句代码示例如下:
SELECT * FROM TABLE_NAME WHERE COLUMN_NAME REGEXP '^[0-9]+$'
下面我们来看下实例:
-- 不是以数字开头
select * from mot_terms where `name` not REGEXP '^[0-9]'
-- 不是以字母开头
select * from mot_terms where `name` not REGEXP '^[a-zA-Z]'
-- 已数字和特殊字符开头
select * from mot_terms where `name` REGEXP '^[@#$%&0-9]'
一、mysql判断是不是数字
SELECT '1.1' REGEXP '[0-9.]'
结果为1表示true 当然也可以使用SELECT '1.1' REGEXP '[^0-9.]'
,结果为0表示false。 二、mysql判断是不是包含字母
SELECT '1AA' REGEXP '[a-z]'
结果为1表示true,此情况不区分英文大小写,若区分大小写可使用SELECT '1AA' REGEXP BINARY '[a-z]'
,结果为0表示false。
SELECT * FROM `v9_category_attribute` WHERE title_cn REGEXP BINARY '[A-Z]';
BINARY 强制区分大小写
REGEXP 正则表达式
实例:
mysql> create table test (name varchar(64));
Query OK, 0 rows affected (0.04 sec)
mysql> insert into test set name = 'taoge';
Query OK, 1 row affected (0.03 sec)
mysql> select * from test;
+-------+
| name |
+-------+
| taoge |
+-------+
1 row in set (0.00 sec)
mysql> select * from test where name = 'TAOGE';
+-------+
| name |
+-------+
| taoge |
+-------+
1 row in set (0.00 sec)
mysql> select * from test where name = 'taoge';
+-------+
| name |
+-------+
| taoge |
+-------+
1 row in set (0.00 sec)
mysql> select * from test where binary name = 'TAOGE';
Empty set (0.00 sec)
mysql> select * from test where binary name = 'taoge';
+-------+
| name |
+-------+
| taoge |
+-------+
1 row in set (0.00 sec)
mysql>
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)