我的SQL查询将字母与数字隔离开来

时间:2013-11-20 23:09:53

标签: mysql

我有一个列名发送,包括字母和数字值而不是字母数字,我想分隔字母值和它们的计数。

建议我查询?我试过'%[0-9]%'但不能分开

1 个答案:

答案 0 :(得分:0)

您应该尝试包含一些示例数据或一些代码,以显示您要执行的操作。

但是,无论如何,希望你可以将我的例子用于你的问题。首先,我将创建一个列名为“send”的表,如上所述:

mysql> CREATE TABLE test (send VARCHAR(255));
Query OK, 0 rows affected (0.11 sec)

我们将插入一些数字和非数字的各种值:

mysql> INSERT INTO test (send) VALUES (1), (-2), (3), ('a'), ('b'), ('ZZ'),
    ->   ('test'), (42), ('1.2'), (0), (0123), ('123');
Query OK, 12 rows affected (0.01 sec)
Records: 12  Duplicates: 0  Warnings: 0

然后我们可以构建一个使用REGEXP来确定值是否为数字的查询:

mysql> SELECT
    -> COUNT(*) AS `Count`,
    -> IF(1 = send REGEXP '^(-|\\+)?([0-9]+\\.[0-9]*|[0-9]*\\.[0-9]+|[0-9]+)$',
    ->   'NUMERIC',
    ->   'NON-NUMERIC') AS IsNumeric
    -> FROM
    -> test
    -> GROUP BY
    -> IsNumeric
    -> ;
+-------+-------------+
| Count | IsNumeric   |
+-------+-------------+
|     4 | NON-NUMERIC |
|     8 | NUMERIC     |
+-------+-------------+
2 rows in set (0.00 sec)

将此应用于您正在尝试的任何内容。说“发送REGEXP”^( - | \ +)的部分?([0-9] + \。[0-9] | [0-9] \。[0-9] + | [0-9] +)如果send的值是数字,则$'“返回1。