Most likely, DOID is a nvarchar(n) column - then it's obvious: your CASE expression must return the same datatype for all paths, and since the first WHEN clause returns an INT, all other paths also must return an INT, and if they don't, SQL Server will convert their return values to INT which causes the exception.
Also: since you're updating the DOID column, you should use its native data type - so your first WHEN clause should return a nvarchar(n) instead of an INT.
Try this code instead:
UPDATE Quotation_T
SET DOID = CASE
WHEN DOID = '' THEN CAST(19 AS NVARCHAR(20))
WHEN DOID LIKE '%10%' THEN DOID
WHEN DOID != '' THEN (DOID + N',20')
END
Now, all WHEN clauses properly return the datatype that DOID being updated expects, and no implicit conversions are necessary.
DOIDis anvarchar(n)column - then it's obvious: yourCASEexpression must return the same datatype for all paths, and since the firstWHENclause returns anINT, all other paths also must return anINT, and if they don't, SQL Server will convert their return values toINTwhich causes the exception - marc_s