merci pour vos réponses
mots sont séparés par des espaces, des virgules et/ou des points-virgules, tous les séparateurs doivent rester en place
par exemple enregistrement
'mot1, mot2 ;;; mot3,'
evalueates à
'mot3, word2 ;;; word1,'
en raison des exigences du système existant de se faire, il doit en utilisant seule requête,
j'ai essayé:
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)
et des idées similaires, mais il a été fonctionne pas correctement
modifier: tout sauf les lettres et les chiffres sont des séparateurs
Edit2: Unfortunetely i ne peut invoquer les instructions ddl et je n'ont pas accès direct à la base de données, Mon entreprise utilise un ancien logiciel fermé - nous pouvons uniquement utiliser la console de l'application externe pour sélectionner ou parfois mettre à jour. Je peux ajouter ma mise à jour à la liste d'emplois - elle sera effectuée tous les jours à l'avenir.
Table
a environ 60k lignes, colonne contient entre 2 et environ 20 mots, non null
désolé pour mon anglais :)
Est-ce que les virgules et les points-virgules importance? – Quassnoi
Cette question pourrait être clarifiée. – Jeremiah
Qu'est-ce qui sépare les mots? espace? virgule? point-virgule? – fredrik