T-sql脚本替换字符串中的前2个数字

时间:2014-12-09 08:43:50

标签: sql sql-server-2008 tsql

Parameter包含列SerialNumber。值SerialNumber的前缀为数字99.示例:99064960

Table.Parameter
-------------
[ParameterID] [int] IDENTITY(1,1) NOT NULL,
[SerialNumber] [varchar](10) NULL,

我想编写一个更改脚本,在所有行上用88替换99。

预期结果:88064960

使用以下声明解决了问题但发布了问题以将这些功能合并为一个声明。

UPDATE table
SET SerialNumber = SUBSTRING(SerialNumber, 3, LEN(SerialNumber)-2)
WHERE ID IN ( )

此字符串随后添加了前缀:

update table
set SerialNumber = '88' + SerialNumber 
where ID in ( )

谢谢。

2 个答案:

答案 0 :(得分:4)

这个怎么样:

UPDATE mytable
SET field = '88' + SUBSTRING(field, 3)
WHERE SUBSTRING(field, 1, 2) = '99'

答案 1 :(得分:0)

你可以这样做:

DECLARE @str VARCHAR(100)
SET @str='99064960'
SELECT 
    CASE 
        WHEN LEFT(@str,2)='99'
        THEN '88'+SUBSTRING(@str,3,LEN(@str))
        ELSE @str
    END

在这样的更新声明中:

UPDATE Table1
SET theString='88'+SUBSTRING(@str,3,LEN(@str))
WHERE LEFT(Table1.theString,2)='99'

参考: