2012-06-21 58 views
1

之间我有一个有趣的场景,以数字,字母和数字之间添加​​。SQL添加“ - ”号-alphates号码

实施例:

输入:123AB56;输出:123-AB-56;

输入:56XYZ777;输出:56-XYZ-777;

没有为所述源数据没有规则图案。

在此的任何输入被理解。

+0

你必须尝试的东西,然后问问题,当你有问题。 '我们觉得最好的堆栈溢出的问题,有一点在他们的源代码,但如果你的问题一般包括...'见http://stackoverflow.com/faq –

+0

不是很容易对前14.你会Teradata的任何版本需要一个UDF来有效地完成它。随着Teradata 14使用其原生正则表达式支持。 –

回答

3

如果它是一个相对更高版本的Oracle,有regexp_replace对于这些类型的任务:

SELECT 
    REGEXP_REPLACE(YOURFIELD, 
       '([[:digit:]]+)([[:alpha:]]+)([[:digit:]]+)', 
       '\1-\2-\3') REPLACED_RESULTS 
    FROM YOURTABLE;