Вы можете использовать функцию STUFF , которая заменяет части строки.В данном случае это последний символ.
UPDATE tbl
SET COL = stuff(COL, len(COL), 1, '')
WHERE COL > ''
Или используйте ВЛЕВО, взяв все, кроме последнего.Условие COL> '' гарантирует, что LEFT будет иметь правильную длину.LEFT - это ярлык в SQL Server, который, по-видимому, реализован как SUBSTRING ( см. Далее ниже) *
UPDATE tbl
SET COL = LEFT(COL, len(COL) -1)
WHERE COL > ''
Если у вас есть данные как с конечной точкой с запятой, так и без нее, вы можете выбратьих конкретно
UPDATE tbl
SET COL = LEFT(COL, len(COL) -1)
WHERE RIGHT(COL,1) = ':'
Вот план запроса для запроса, использующего ВЛЕВО (показаны только 3 верхние строки текстового плана)
select LEFT(text, LEN(text)-1), * from master..syscomments
|--Compute Scalar(DEFINE:([Expr1061]=substring([Union1060],(1),len([Union1060])-(1))))
|--Concatenation
|--Compute Scalar(DEFINE:([Expr1005]=(0), [Expr1007]=(0)))