Обновление поля с использованием функций right и charindex

У меня есть данные в моем поле, которое выглядит так:

UNDC, UNKN
UNDC, MUA
UNKN, BUS

Я хочу обновить поле myfield, оставив после запятой только текст.

Я использовал комбинацию right и charindex, но когда я запускаю оператор обновления, все стирается. Вот что у меня сейчас:

update mytable
set myfield = RIGHT(myfield, charindex(',', myfield)-1)
where myfield like 'un%' and myfield like '%,%'

Может кто-нибудь сказать мне, что я здесь делаю не так?

1 ответ

RIGHT() считает символы с конца строки. Это не имеет ничего общего с тем, что CHARINDEX() возвращает, потому что эта функция возвращает позицию отсчета с начала.

Вы можете делать то, что вы хотите, используя substring():

update mytable
    set myfield = substring(myfield, charindex(',', myfield) + 1, length(myfield))
    where myfield like 'un%,%' ;

Обратите внимание, что я объединил два условия в where пункт в одно условие.

Другие вопросы по тегам