仅替换SQL中第一次出现的字符串

时间:2016-05-18 15:15:30

标签: sql sql-server sql-server-2008

我必须通过用'+'前缀替换00来更新以00开头的所有电话号码。 我必须只替换第一次出现的00而不是其他任何东西。

phone_number:     000258843300081
ActualResult:     +02588433+081
ExpectedResult:   +0258843300081

使用了错误的查询:

    UPDATE [dbo].[phone]
    SET phone_number = REPLACE(phone_number, '00', '+')
    WHERE phone_number_numeric LIKE '00%'

2 个答案:

答案 0 :(得分:2)

只需使用STUFF()

UPDATE [dbo].[phone]
    SET phone_number = STUFF(phone_number, 1, 2, '+')
    WHERE phone_number_numeric LIKE '00%';

答案 1 :(得分:1)

这是正确的查询。只需转换为更新命令! 另外,我使用了通用方法来解决问题。

    SELECT 
      phone_number
    , STUFF(phone_number, CHARINDEX('00', phone_number), LEN('00'), '+') as ExpectedResult
    FROM dbo.phone 
    WHERE phone_number_numeric LIKE '00%'

REPLACE函数查看整个字符串。使用STUFF功能将范围缩小到所需的限制。