SQL:在字符串中的数字前插入空格

时间:2012-09-12 10:24:52

标签: sql sql-server string nvarchar

我的表中有一个nvarchar字段,其中包含各种字符串。 如果有一个字符串包含一个非数字符号后面的数字,我想在该数字前插入一个空格。

即 - 如果该字段中的某个条目为abc123,则应将其转为abc 123,或ab12.34应变为ab 12. 34。我希望这是在整个表格中完成。

实现目标的最佳途径是什么?

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情:

select left(col,PATINDEX('%[0-9]%',col)-1 )+space(1)+
       case
         when PATINDEX('%[.]%',col)<>0 
           then substring(col,PATINDEX('%[0-9]%',col),len(col)+1-PATINDEX('%[.]%',col))
                +space(1)+
                substring(col,PATINDEX('%[.]%',col)+1,len(col)+1-PATINDEX('%[.]%',col))
         else substring(col,PATINDEX('%[0-9]%',col),len(col)+1-PATINDEX('%[0-9]%',col))
       end       
from tab

这不是简单的,但我希望它能帮到你。

SQL Fiddle

我使用了函数(链接到MSDN): LEFTPATINDEXSPACESUBSTRINGLENregular expression