2012-09-12 236 views
0

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

那就是 - 如果在该领域的某些条目abc123,它应该变成abc 123,或ab12.34应该成为ab 12. 34。我想这对整个表来完成。

实现它的最好方法是什么?

+0

什么是您的RDBMS? – Parado

+0

其MS SQL服务器 – eRez

+0

我到目前为止还没有尝试过任何东西,因为我不知道从哪里开始...... – eRez

回答

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

+0

需要进行一些小调整以适应我的表格结构,但最终完成了工作 - 欢呼! – eRez