• bitbucket-25253 (3/11/2013)


    CREATE TABLE T(COMCOD nchar(4), ACTCODE nvarchar(6), ACTDESC nvarchar(250),

    PRIMARY KEY (ACTCODE))

    INSERT INTO T

    SELECT '3306', '180001','ADVANCE TO STAFF' UNION ALL

    SELECT '3306', '180002','ADVANCE TO OTHERS' UNION ALL

    SELECT '3306', '180003','ADVANCE TO SITE OFFICE'

    UPDATE T SET ACTCODE = '190' + SUBSTRING(ACTCODE,4,3)

    WHERE SUBSTRING(ACTCODE,1,3) = '180'

    Results:

    COMCODACTCODEACTDESC

    3306 190001 ADVANCE TO STAFF

    3306 190002ADVANCE TO OTHERS

    3306 190003ADVANCE TO SITE OFFICE

    Wouldn't STUFF be a better choice? You know you're replacing the first 3 characters, you don't know that the length of ACTCODE is always the same.

    UPDATE T

    SET ACTCODE = STUFF(ACTCODE, 1, 3, '190')

    WHERE ACTCODE LIKE '180%';


    Forever trying to learn
    My blog - http://www.cadavre.co.uk/
    For better, quicker answers on T-SQL questions, click on the following...http://www.sqlservercentral.com/articles/Best+Practices/61537/
    For better, quicker answers on SQL Server performance related questions, click on the following...http://www.sqlservercentral.com/articles/SQLServerCentral/66909/