仅替换SQL中第一个出现的字符串
我必须更新所有以00开头的电话号码,用“+”前缀替换00。 我必须只替换第一次出现的00,而不替换其他内容仅替换SQL中第一个出现的字符串,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我必须更新所有以00开头的电话号码,用“+”前缀替换00。 我必须只替换第一次出现的00,而不替换其他内容 phone_number: 000258843300081 ActualResult: +02588433+081 ExpectedResult: +0258843300081 使用了不正确的查询: 这是正确的查询。只需转换为更新命令! 另外,我使用了一种通用的方法来解决这个问题 SELECT phone_number , STUFF(p
phone_number: 000258843300081
ActualResult: +02588433+081
ExpectedResult: +0258843300081
使用了不正确的查询:
这是正确的查询。只需转换为更新命令! 另外,我使用了一种通用的方法来解决这个问题
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
函数将范围缩小到所需的限制。只需使用STUFF()
:
为什么参数中的1和2不能像@Gordon Linoff的回答那样?@JamesZ:为了清楚起见,有些人肯定会想知道1和2代表什么。这就解释了@詹姆士-是的!“”应该在代码中避免。
SELECT
phone_number
, STUFF(phone_number, CHARINDEX('00', phone_number), LEN('00'), '+') as ExpectedResult
FROM dbo.phone
WHERE phone_number_numeric LIKE '00%'
UPDATE [dbo].[phone]
SET phone_number = STUFF(phone_number, 1, 2, '+')
WHERE phone_number_numeric LIKE '00%';