2016-11-29 105 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