如何检查列值是否在mysql中具有字符串或数字值?

时间:2016-04-25 11:01:40

标签: mysql

我有多列的mysql表,列有字符串数据类型code,列的值可能只是数字,也可能是字符串和数字的混合,例如:一行值具有57677和其他行列值,如2cskjf89378732sdjfh

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列中包含字符串值的行。

5 个答案:

答案 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)

使用regular expressions

SELECT * 
FROM myTable 
WHERE code REGEXP '^[0-9]+$';

这将过滤掉所有数字的列值。

答案 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]%'