我的表中有一个nvarchar
字段,其中包含各种字符串。 如果存在包含非数字符号后面的数字的字符串,我想在该数字前插入一个空格。SQL:在字符串中的数字之前插入空格
那就是 - 如果在该领域的某些条目abc123
,它应该变成abc 123
,或ab12.34
应该成为ab 12. 34
。我想这对整个表来完成。
实现它的最好方法是什么?
我的表中有一个nvarchar
字段,其中包含各种字符串。 如果存在包含非数字符号后面的数字的字符串,我想在该数字前插入一个空格。SQL:在字符串中的数字之前插入空格
那就是 - 如果在该领域的某些条目abc123
,它应该变成abc 123
,或ab12.34
应该成为ab 12. 34
。我想这对整个表来完成。
实现它的最好方法是什么?
你可以尝试这样的事情:
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
这不是简单的,但我希望它会帮助你。
我使用的功能(链接到MSDN): LEFT,PATINDEX,SPACE,SUBSTRING,LEN 和regular expression。
需要进行一些小调整以适应我的表格结构,但最终完成了工作 - 欢呼! – eRez
什么是您的RDBMS? – Parado
其MS SQL服务器 – eRez
我到目前为止还没有尝试过任何东西,因为我不知道从哪里开始...... – eRez