我有一个-
格式的字符串。
我想用99999-124fdsg
替换第一个空格,用非空格替换下一个空格。我的预期结果将如下所示:
stuff(Product,charindex('',product),1,'-')as trim
要替换我使用此表达式的第一个字符:
<table>
<tr>
<td>Parent</td>
<td>Component</td>
<td>Quantity</td>
</tr>
<tr>
<td>123100A</td>
<td>123201B</td>
<td>1</td>
</tr>
<tr>
<td>123201B</td>
<td>123301A</td>
<td>1</td>
</tr>
<tr>
<td>123201B</td>
<td>123302A</td>
<td>1</td>
</tr>
<tr>
<td>123301A</td>
<td>123401A</td>
<td>1</td>
</tr>
<tr>
<td>123301A</td>
<td>123402A</td>
<td>1</td>
</tr>
<tr>
<td>123301A</td>
<td>123403A</td>
<td>1</td>
</tr>
</table>
因为我想将新列命名为trim。我怎么能为第二个角色做什么?
答案 0 :(得分: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
答案 1 :(得分: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