替换字符串SQL

时间:2016-11-29 17:05:12

标签: sql sql-server

我有一个-格式的字符串。

我想用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。我怎么能为第二个角色做什么?

2 个答案:

答案 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