2016-11-29 107 views
2

我有一个字符串,它的格式为99999 124 fdsg替换字符串SQL

我想用-替换第一个空格,下一个空格替换为非空格。我预期的结果将是这样的:

99999-124fdsg 

要更换我用这个表达的第一个字符:

stuff(Product,charindex('',product),1,'-')as trim 

因为我要来命名新的列作为装饰。我该怎么做第二个角色?

+0

你刚才不是问这个问题? –

回答

3

假设,你比如与STUFF工作正常了第一个空白,你可以用REPLACE来包装它。 STUFF后有只有其他空白左:

replace(stuff(Product,charindex(' ',product),1,'-'),' ','') 

工作例如:

DECLARE @s VARCHAR(50) = '99999 124 fdsg'; 
select replace(stuff(@s,charindex(' ',@s),1,'-'),' ','') 

结果

99999-124fdsg 
4

Charindex有最后一个参数start_location用它来寻找第二个空字符串

试试这个

DECLARE @str VARCHAR(50) = '99999 124 fdsg' 

SELECT Stuff(Stuff(@str,Charindex(' ',@str),1,'-'),Charindex(' ',@str,Charindex(' ',@str) + 1),1,'') 

结果:99999-124fdsg

+0

我认为,没有必要搜索第二个空白,因为第二个空白是第一个操作之后的唯一一个... – Shnugo

+0

@Shnugo OP提到*下一个空格是非空格*。所以它可能不是最后一个空字符串。如果这是最后一个空字符串,那么肯定你的回答看起来好多了 –

+0

啊是的,可以像这样读取它......无论如何+1从我身边... – Shnugo