спасибо за ваши ответы
слова разделяются пробелами, запятыми и / или точками с запятой,
все разделители должны оставаться на месте
например. запись
'word1, word2 ;;; word3,'
оценивается в
'word3, word2 ;;; word1,'
в соответствии с требованиями существующей системы это необходимо сделать
используя один запрос,
я пробовал:
update t_desc set name =
(select name
from
(select name,
case when wb is null then rname when wb >= we then stuff(rname, wb, 128, REVERSE (substring(rname, wb, 128))) else
stuff(rname, wb, we-wb+1, REVERSE(substring(rname, wb, we-wb+1))) end rname,
case when wb is null or wb > we then null else PATINDEX('%[a-z0-9]%', SUBSTRING(rname, we+1, 128))+we end wb,
case when we is null or wb > we then null else PATINDEX('%[a-z0-9][^a-z0-9]%', SUBSTRING(rname, we+1, 128))+we end we
from
(select name,
case when wb is null then rname when wb >= we then stuff(rname, wb, 128, REVERSE (substring(rname, wb, 128))) else
stuff(rname, wb, we-wb+1, REVERSE(substring(rname, wb, we-wb+1))) end rname,
case when wb is null or wb > we then null else PATINDEX('%[a-z0-9]%', SUBSTRING (rname, we+1, 128))+we end wb,
case when we is null or wb > we then null else PATINDEX('%[a-z0-9][^a-z0-9]%', SUBSTRING(rname, we+1, 128))+we end we
from
(select name,
case when wb is null then rname when wb >= we then stuff(rname, wb, 128, REVERSE (substring(rname, wb, 128))) else
stuff(rname, wb, we-wb+1, REVERSE(substring(rname, wb, we-wb+1))) end rname,
case when wb is null or wb > we then null else PATINDEX('%[a-z0-9]%', SUBSTRING (rname, we+1, 128))+we end wb,
case when we is null or wb > we then null else PATINDEX('%[a-z0-9][^a-z0-9]%', SUBSTRING(rname, we+1, 128))+we end we
from
(select name,
stuff(rname, wb, we-wb+1, REVERSE(substring(rname, wb, we-wb+1))) rname,
PATINDEX('%[a-z0-9]%', SUBSTRING(rname, we+1, 128))+we wb,
PATINDEX('%[a-z0-9][^a-z0-9]%', SUBSTRING(rname, we+1, 128))+we we
from
(select name, rname,
PATINDEX('%[a-z0-9]%', rname) wb,
PATINDEX('%[a-z0-9][^a-z0-9]%', rname) we
from
(select t_desc.name, REVERSE(name) rname) t1) t2) t3) t4) t5) t6)
и подобные идеи, но это не сработало
редактирование:
все, кроме букв и цифр, являются разделителями
edit2:
к сожалению, я не могу вызвать операторы ddl и не имею прямого доступа к базе данных,
моя компания использует старое, закрытое программное обеспечение - мы можем использовать только консоль внешнего приложения для выбора или иногда обновления.
я могу добавить свое обновление в список вакансий - оно будет выполняться каждый день в будущем.
таблица имеет около 60 тыс. Строк,
столбец содержит от 2 до 20 слов, а не ноль
извините за мой английский :) 1026 *