PDA

Visualizza la versione completa : [sql] modificare alcuni campi


dogo21sob
06-02-2009, 14:17
ho una tabella "nometabella" con dei campi, di cui uno "links". ora vorrei modificare tutti i links che iniziano per "http://www." sostituendo tale stringa con "http://" come faccio a farlo con una query in un colpo solo? onestamente se fossero stati pochi links l'avrei fatto a mano, ma ne sono diverse centinaia...

123delphi321
06-02-2009, 19:01
update nometabella
set nometabella.links='http://'||SUBSTR(nometabella.links,12,lenght(nometabella. links))
where SUBSTR(nometabella.links,1,11)="http://www."


ciao

dogo21sob
06-02-2009, 19:02
mi spiegheresti però la sintassi? soprattutto quei numeri... 1,11,12... da dove escono? :master:

123delphi321
06-02-2009, 19:13
update nometabella

aggiorna tabella



set nometabella.links='http://'||SUBSTR(nometabella.links,12,lenght(nometabella. links))

assegna ala campo links di nometabella il valore 'http://' a cui aggiungi ||

SUBSTR(nometabella.links,12,lenght(nometabella.lin ks))

il valore contenuto nello stesso campo nometabella.links dal 12 carattere fino alla fine

abbiamo escluso i primi 11 caratteri perche questi hanno valore "http://www."





where SUBSTR(nometabella.links,1,11)="http://www."




va bene cosi? :ciauz:

123delphi321
06-02-2009, 19:14
se poi vuoi basta che fai una ricerca con google... cerca sql substr... semmai troverai spiegato meglio

YuYevon
06-02-2009, 19:31
Non vorrei sbagliarmi ma forse questa


where SUBSTR(nometabella.links,1,11)="http://www."


può rendersi anche più semplicemente con



WHERE nometabella.links LIKE 'http://www.%'


dove il simbolo '%' alla fine della stringa indica un numero e un tipo generici di caratteri dopo quelli specificati esplicitamente, nel nostro caso "http://www."

dogo21sob
06-02-2009, 19:41
#1305 - FUNCTION nomedb.lenght does not exist

questo è l'errore che mi dà :dhò:

123delphi321
06-02-2009, 19:49
scusa, posta tutta la query che hai scritto

dogo21sob
06-02-2009, 19:49
sto guardando un pò gli esempi qui
http://database.html.it/articoli/leggi/928/stringhe-in-mysql-trucchi-e-soluzioni/3/
ma non riesco a venirne a capo!

p.s. se può interessare sto usando mysql e lancio le query tramite phpmyadmin

edit: la query l'ho scritta esattamente come me l'hai scritta tu, sostituendo esclusivamente "nometabella" con quello della tabella in questione...

facendo:


SELECT links
FROM nometabella
WHERE SUBSTR( nometabella.links, 1, 11 ) = "http://www."


funziona, quindi il problema sta proprio nell'uso di lenght...

123delphi321
06-02-2009, 19:52
lenght e' una funzione del linguaggio sql..... credo che anche MySql sia dotato di questa funzione

Loading