MySQL:如何用“ - ”分割文本和数字

时间:2013-02-16 11:43:23

标签: mysql sql

我想重写一些用户ID,它在文本和数字之间用“ - ”分隔。例如:

  • KT-12345
  • BA-98765
  • CC-98765
  • ITA-87987

来自大量与文本和数字混淆的数据。例如:

  • KT98798
  • CC94788
  • BB87600

所以问题是:我想将第二个示例中的用户ID转换为第一个示例。如何在MySQL中实现它。请建议。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

没有“SELECT”数据,但更新:

UPDATE `table` SET field = REPLACE(field, '-', '');

答案 2 :(得分:0)

这里有一个如何在php中使用它的例子

$str = 'abc123';
preg_match('#([a-z]*)(\d*)#', $str, $match);
echo 'alpha: ' . $match[1];
echo 'num: ' . $match[2];?>