Problema di sostituzione tramite query sql

  • Creatore Discussione Creatore Discussione xDOMYx
  • Data di inizio Data di inizio

xDOMYx

Nuovo Utente
2 Feb 2011
25
0
1
Devo usare una stringa come questa per fare una sostituzione:
Codice:
UPDATE post SET pagetext = REPLACE(pagetext,"[warn:XXXXXXXX]","[warn]")
Questa mi cerca nella tabella POST, nella colonna PAGETEXT, la parola "[warn:XXXXXXXX]" e la converte in "[warn]" (se sbaglio qualcosa ditemelo).

Il mio problema è che al posto delle 8 X, dovrei mettere 8 caratteri jolly, perchè al posto delle X ci sono caratteri casuali.
Come risolvere? :D
 
Codice:
UPDATE post SET pagetext = "[warn]" where pagetext like "[warn:%"

ciao
Marino
 
Ultima modifica:
Intanto grazie.
Per quel pò di conoscenza che ho del linguaggio, la tua stringa modifica l'intero campo.
PAGETEXT contiene appunto testo, tra cui spesso è presente quel tag WARN che devo sistemare.

Penso che la tua sintassi non vada bene. :/
 
ciao, scusa non ho percepito al volo che c'era altro testo
non sarà una soluzione bellissima ma credo che debba essere usata una sola volta,
funziona solo per lunghezza costante,

[warn:abcdfjyt] testo sole
[warn:bquuvuyt] testo luna


giusto per vedere ...
Codice:
select '[warn]'+SUBSTRING(field_1,16,DATALENGTH(field_1)) 
from users where SUBSTRING(field_1,1,6) = '[warn:'

poi ...
Codice:
update users set field_1 = '[warn]'+SUBSTRING(field_1,16,DATALENGTH(field_1))
where SUBSTRING(field_1,1,6) = '[warn:'
(2 row(s) affected)

per controllare ...
Codice:
select field_1 from users where field_1 like '%warn%'

[warn] testo luna
[warn] testo sole

magari fai copia della tabella ... prima
ciao
Marino
 
Questo metodo dovrebbe funzionare, però ho notato che è riferito ad un numero preciso di caratteri.
Una soluzione con un numero variabile di caratteri? Ovvero che si stoppa quando trova la parentesi quadra chiusa?
Perchè i caratteri casuali variano da 7 a 9.
 
Questo fa lo stesso però in un'unica query giusto?
Codice:
UPDATE post SET pagetext = replace( pagetext, substring( pagetext, locate( '[youtube', pagetext ) , 17 ) , '[youtube' ) WHERE LOCATE( '[youtube', pagetext ) >0
E' riferito al tag Youtube ma il concetto è lo stesso.
Però siamo sempre sullo stesso problema.

L'ideale sarebbe poter sostituire con un metodo del genere:
Codice:
UPDATE post SET pagetext = REPLACE(pagetext,"[warn:XXXXXXXX]","[warn]")
però al posto delle X inserire il carattere jolly singolo (dovrebbe essere il trattino basso ma non funzione), e poi rieseguo la query con 7 e 9 caratteri jolly.
 

Discussioni simili