如何仅更改匹配条件的值的开头?
How to change only the beginning of value that matches condition?
我有来自特定 table 的记录,其中包含以下字段:phone1
、phone2
.
如何将这些字段中 057
的值更改为
053
,但只有值的开头?
例如: 057-4353009
应该改为053-4353009
,但是057-5405731
应该改为053-5405731
(此特定数字中的第二个 057
不应更改)。
您可以使用 REPLACE :
UPDATE tbl
SET phone = REPLACE(phone, '057-', '053-')
SQLFiddle
编辑:如果您不确定数字是否具有带分隔符的结构,如 xxx–xxxxxxx:
UPDATE tbl
SET phone = '053' + SUBSTRING(phone, 4 , LEN(phone) - 1)
WHERE LEFT(phone, 3) = '057';
SQLFiddle
也试试这个(对我有用):
UPDATE table1
SET phone = table2.leftc + table2.rightc
FROM table1 INNER JOIN
(select '053' as leftc, RIGHT(phone ,Len(phone) - 3)as rightc, phone
from table1
where LEFT(phone, 3) = '057') AS table2 ON table1.phone = table2.phone
您必须实现两个部分:
- 正在检查 phone 号码是否以特定序列开头
(
WHERE phone LIKE '057%'
)
- 获得
057
之后的部分并且
与新的连接 ('053' + RIGHT(phone, LEN(phone) - 3)
)
这是执行此操作的示例查询:
UPDATE
tbl
SET
phone = '053' + RIGHT(phone, LEN(phone) - 3) -- Leaving the first 3 characters and use another one
WHERE
phone LIKE '057%' -- Starts with 057
一般的解决方法是这样的:
DECLARE
@SearchString NVARCHAR(MAX) = '057'
, @ReplaceString NVARCHAR(MAX) = '053'
UPDATE
tbl
SET
phone = @ReplaceString + RIGHT(phone, LEN(phone) - LEN(@SearchString))
WHERE
phone LIKE (@SearchString + '%')
对于 sql 服务器 2012 使用东西
update tbl
set phone_number=stuff(phone_number,1,3,'053')
WHERE
phone_number LIKE '057%'
我有来自特定 table 的记录,其中包含以下字段:phone1
、phone2
.
如何将这些字段中 057
的值更改为
053
,但只有值的开头?
例如: 057-4353009
应该改为053-4353009
,但是057-5405731
应该改为053-5405731
(此特定数字中的第二个 057
不应更改)。
您可以使用 REPLACE :
UPDATE tbl
SET phone = REPLACE(phone, '057-', '053-')
SQLFiddle
编辑:如果您不确定数字是否具有带分隔符的结构,如 xxx–xxxxxxx:
UPDATE tbl
SET phone = '053' + SUBSTRING(phone, 4 , LEN(phone) - 1)
WHERE LEFT(phone, 3) = '057';
SQLFiddle
也试试这个(对我有用):
UPDATE table1
SET phone = table2.leftc + table2.rightc
FROM table1 INNER JOIN
(select '053' as leftc, RIGHT(phone ,Len(phone) - 3)as rightc, phone
from table1
where LEFT(phone, 3) = '057') AS table2 ON table1.phone = table2.phone
您必须实现两个部分:
- 正在检查 phone 号码是否以特定序列开头
(
WHERE phone LIKE '057%'
) - 获得
057
之后的部分并且 与新的连接 ('053' + RIGHT(phone, LEN(phone) - 3)
)
这是执行此操作的示例查询:
UPDATE
tbl
SET
phone = '053' + RIGHT(phone, LEN(phone) - 3) -- Leaving the first 3 characters and use another one
WHERE
phone LIKE '057%' -- Starts with 057
一般的解决方法是这样的:
DECLARE
@SearchString NVARCHAR(MAX) = '057'
, @ReplaceString NVARCHAR(MAX) = '053'
UPDATE
tbl
SET
phone = @ReplaceString + RIGHT(phone, LEN(phone) - LEN(@SearchString))
WHERE
phone LIKE (@SearchString + '%')
对于 sql 服务器 2012 使用东西
update tbl
set phone_number=stuff(phone_number,1,3,'053')
WHERE
phone_number LIKE '057%'