繁体   English   中英

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

[英]Replace ONLY the first occurrence of a string in SQL

我必须通过用'+'前缀替换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%'

只需使用STUFF()

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

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

    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功能将范围缩小到所需的限制。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM