我有多列的mysql表,列有字符串数据类型即code
,列的值可能只是数字,也可能是字符串和数字的混合,例如:一行值具有57677
和其他行列值,如2cskjf893
或78732sdjfh
。
mysql> select * from testuser;
+------+--------------+
| id | code |
+------+--------------+
| 1 | 232 |
| 2 | adfksa121dfk |
| 3 | 12sdf |
| 4 | dasd231 |
| 5 | 897 |
+------+--------------+
5 rows in set (0.00 sec)
mysql> show create table testuser;
+----------+------------------------------------------------------------------ ---------------------------------------------------------------+
| Table | Create Table |
+----------+------------------------------------------------------------------ ---------------------------------------------------------------+
| testuser | CREATE TABLE `testuser` (
`id` int(11) DEFAULT NULL,
`code` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+----------+------------------------------------------------------------------ ---------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
我只想过滤掉code
列中包含数值的行或过滤code
列中包含字符串值的行。
答案 0 :(得分:2)
获取数字
SELECT id,code
FROM table_name
WHERE code REGEXP '^[0-9]+$';
获取字符串值
SELECT *
FROM table_name
WHERE code REGEXP '^[a-zA-Z]+$'
答案 1 :(得分:2)
试试这个
Mysql Query仅从特定列中获取整数值
SELECT column FROM TABLE where column NOT REGEXP '^[0-9]+$' ;
Mysql Query仅从特定列中获取字符串值
SELECT column FROM TABLE where column REGEXP '^[0-9]+$' ;
答案 2 :(得分:1)
答案 3 :(得分:0)
你也可以在mysql中使用正则表达式。
SELECT * FROM `table` WHERE `code` REGEXP '[0-9]';
结果将是行,code
列中的任何数字。
答案 4 :(得分:0)
试试这个,
select id,code from table_name where code NOT REGEXP '^[0-9]+$'
或者,
select id,code from table_name where code like '%[^0-9]%'