mysql - 从 varchar 中删除非数字和数字

标签 mysql split varchar

我的 SQL 中有以下列

identifier
----------
z250
tr015
011s

我想从中提取数字和非数字字符,所以我有这样的输出:

identifier | pre  | number | post
-----------+------+--------+-----
z250       | z    | 250    | NULL
tr015      | tr   | 015    | NULL
11s        | NULL | 11     | s

有人可以指出我需要从哪里开始寻找吗?该列大约有 700 条记录,并且未遵循命名约定,因此数字之前和之后可以是任意数量的字符。

顺便说一句:返回的字符本身不需要是 NULL,空字符串也可以。数字的前导零也无关紧要。

最佳答案

MySQL 有许多字符串函数会有所帮助。

要开始使用,请参阅MySQL Regex page

下面是使用 :alnum: 进行字母数字搜索的示例。替换 :digit: 可能对您有用,可以提取中间的数字。

mysql> SELECT 'justalnums' REGEXP '[[:alnum:]]+';       -> 1 
mysql> SELECT '!!' REGEXP '[[:alnum:]]+';               -> 0

关于mysql - 从 varchar 中删除非数字和数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42251785/

相关文章:

mysql - 如何在关系表的同一列中获取具有两个结果的项目

php - Yii 的复杂 STAT GROUP BY

sql - 法语和西类牙语的特殊字符可以保存在 varchar 中吗?

MySQL 错误 #1071 - 指定的键太长;最大 key 长度为 767 字节

mysql - 多对多 : sequelize doesn't create methods

java - 创建包含分隔符的 on split 方法

r - 如何将矩阵转换为 R 中的不同矩阵?

javascript - 如何在 JavaScript 或 AS3 中将数组拆分为单词,同时将方括号内的单词保持在一起?

sql - 定义可变长度的varchar

MySQL 事件记录查询忽略大小写