0

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

也就是说 - 如果该字段中的某个条目是abc123,它应该变成abc 123,或者ab12.34应该变成ab 12. 34。我希望在整个表格中都这样做。

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

4

1 回答 1

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小提琴

我使用了函数(链接到 MSDN): LEFTPATINDEXSPACESUBSTRINGLEN正则表达式

于 2012-09-13T16:43:01.407 回答