我想重写一些在文本和数字之间用“-”分隔的用户 ID。例如:
- KT-12345
- BA-98765
- CC-98765
- ITA-87987
来自与文本和数字混合的大量数据。例如:
- KT98798
- CC94788
- BB87600
所以问题是:我想将第二个示例中的用户 id 变成第一个。如何在 MySQL 中实现它。请建议。
SELECT
CASE
WHEN floor(substr(name, 3,1)) > 0
THEN CONCAT_WS('-', SUBSTRING(name, 1, 2), SUBSTRING(name, 3, LENGTH(name)))
ELSE CONCAT_WS('-', SUBSTRING(name, 1, 3), SUBSTRING(name, 4, LENGTH(name)))
END AS new_name
FROM test
没有“选择”数据,但更新:
UPDATE `table` SET field = REPLACE(field, '-', '');
这是一个如何在 php 中使用它的示例
$str = 'abc123';
preg_match('#([a-z]*)(\d*)#', $str, $match);
echo 'alpha: ' . $match[1];
echo 'num: ' . $match[2];?>