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 に答える