您的查询将匹配仅由数字组成的第一个单词中的数字位数,您可以在此处查看缩减的测试用例.因此,如果您假设您只有一个这样的数字,那么您的查询实际上是有效的,并且您可以在测试集中看到您的示例.
SELECT t, (case
WHEN `t` REGEXP '[[:<:>:]]' then '1'
WHEN `t` REGEXP '[[:<:>:]]' then '2'
WHEN `t` REGEXP '[[:<:>:]]' then '3'
WHEN `t` REGEXP '[[:<:>:]]' then '4'
end) AS digits
FROM test;
+---------------+--------+
| t | digits |
+---------------+--------+
| 23 | 2 |
| 4U 2 | 1 |
| 4U 2 a | 1 |
| 4U 23 a | 2 |
| Ad 34 34 34 d | 2 |
| 4U 2 23 a | 1 |
+---------------+--------+
无论如何,如果你想要,一般来说匹配一行中第一个空格后发生的事情,你可以使用^([[:alnum:]] [[:blank:]])其中^是开头的符号串.