Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 20 su 20
  1. #11
    Dunque rileggendo tutto dovrebbe essere più o meno così:

    1) se vuoi il solo valore
    codice:
    SELECT
    IF(INSTR(SUBSTRING_INDEX(url, 'q=',-1), '&')=0,
    SUBSTRING(url, 2+POSITION('q=' IN url)),
    SUBSTRING(url, 2+POSITION('q=' IN url), -1+INSTR(SUBSTRING_INDEX(url, 'q=',-1), '&')))
    AS valore
    FROM tabella WHERE
    url REGEXP '^http://www.altavista.com/web/results?' AND
    url REGEXP 'q=[^&]+'
    2) se invece vuoi qualcosa del tipo q=valore
    codice:
    SELECT
    IF(INSTR(SUBSTRING_INDEX(url, 'q=',-1), '&')=0,
    SUBSTRING(url, POSITION('q=' IN url)),
    SUBSTRING(url, POSITION('q=' IN url), 1+INSTR(SUBSTRING_INDEX(url, 'q=',-1), '&')))
    AS valore
    FROM tabella WHERE
    url REGEXP '^http://www.altavista.com/web/results?' AND
    url REGEXP 'q=[^&]+'

  2. #12
    guarda anche questo:
    codice:
    SELECT
    IF(INSTR(SUBSTRING_INDEX(url, '&q=',-1), '&')=0,
    SUBSTRING(url, 3+POSITION('&q=' IN url)),
    SUBSTRING(url, 3+POSITION('&q=' IN url), -1+INSTR(SUBSTRING_INDEX(url, '&q=',-1), '&')))
    AS valore
    FROM tabella WHERE
    url REGEXP '^http://www.altavista.com/web/results?' AND
    url LIKE '%&q=%'
    UNION
    SELECT
    IF(INSTR(SUBSTRING_INDEX(url, '?q=',-1), '&')=0,
    SUBSTRING(url, 3+POSITION('?q=' IN url)),
    SUBSTRING(url, 3+POSITION('?q=' IN url), -1+INSTR(SUBSTRING_INDEX(url, '?q=',-1), '&')))
    AS valore
    FROM tabella WHERE
    url REGEXP '^http://www.altavista.com/web/results?' AND
    url LIKE '%?q=%'

  3. #13
    VVoVe:


    grazie a tutti delle risposte, fra un pò mi metto a studiarle..

    (cmq mi sembra di capire che queste query siano un pò lente, giusto? considerate che i record potrebbero essere anche 4000-5000)


  4. #14
    Originariamente inviato da alcatraz69

    codice:
    SELECT
    IF(INSTR(SUBSTRING_INDEX(url, 'q=',-1), '&')=0,
    SUBSTRING(url, 2+POSITION('q=' IN url)),
    SUBSTRING(url, 2+POSITION('q=' IN url), -1+INSTR(SUBSTRING_INDEX(url, 'q=',-1), '&')))
    AS valore
    FROM tabella WHERE
    url REGEXP '^http://www.altavista.com/web/results?' AND
    url REGEXP 'q=[^&]+'
    questa funziona
    (marketto la tua non funziona, mi restiutisce il campo valore vuoto)

    mi spieghi quell'if alcatraz ?
    cmq ora cerca qualche link per le regex di mysql (ne avete qualcuno buono?)

    grasssie


  5. #15
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    Originariamente inviato da xnavigator
    questa funziona
    (marketto la tua non funziona, mi restiutisce il campo valore vuoto)
    a me funge


    Originariamente inviato da xnavigator
    cmq ora cerca qualche link per le regex di mysql (ne avete qualcuno buono?)
    la parte interessante della query è la prima, ovvero quella che estrae solo una parte di record. la REGEXP dice solo quali record soddisfano determinati requisiti...

    per il link:
    http://dev.mysql.com/doc/mysql/en/St...s.html#IDX1317

    think simple think ringo

  6. #16
    ragazzi chiedo un attimo qua senza aprirne un altro..

    codice:
    $url="http://www.google.it/search?cjkosjf&q=query";
    if (ereg('^http://www\.google\.it/search\?(.)*q=(^&)+',$url))
    	die('ok');
    else
    	die('no');
    perchè stampa no? il pattern non è corretto?

  7. #17
    risolto grazie lo stesso

  8. #18
    una query normalissima con LIKE?

    LIKE '%results?q=%'

    se l'url e valido non ci può essere un altro punto interrogativo dentro...quindi non ci sono rischi ^^

    al max si fa qualche controllo prima degli inserimenti...cosa che è 1000 volte + leggera di fare una query con le regexp
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  9. #19
    Infatti nell'ultima che ho postato si può fare a meno di REGEXP.
    Usa questa, è abbastanza veloce:
    codice:
    SELECT
    IF(INSTR(SUBSTRING_INDEX(url, '&q=',-1), '&')=0,
    SUBSTRING(url, 3+POSITION('&q=' IN url)),
    SUBSTRING(url, 3+POSITION('&q=' IN url), -1+INSTR(SUBSTRING_INDEX(url, '&q=',-1), '&')))
    AS valore
    FROM tabella WHERE
    url LIKE 'http://www.altavista.com/web/results?%' AND
    url LIKE '%&q=%'
    UNION
    SELECT
    IF(INSTR(SUBSTRING_INDEX(url, '?q=',-1), '&')=0,
    SUBSTRING(url, 3+POSITION('?q=' IN url)),
    SUBSTRING(url, 3+POSITION('?q=' IN url), -1+INSTR(SUBSTRING_INDEX(url, '?q=',-1), '&')))
    AS valore
    FROM tabella WHERE
    url LIKE 'http://www.altavista.com/web/results?%' AND
    url LIKE '%?q=%'
    L'if controlla se per caso il parametro q= è in coda alla querystring.
    ciao

  10. #20
    una semplice

    SELECT url FROM tabella WHERE url LIKE '%results?q=%'

    no? :master:

    magari lo usi insieme ad ...
    http://it.php.net/manual/en/function.parse-url.php

    tengo a ricordarti che mysql lo esegue su ogni riga di dati tutto quell'ambaradan...e fin quando son poche...ok...ma quando diventano tante?

    ---

    cmq perché non farlo a priori questo lavoro? ovvero di inserire SOLO i vari url che sono corretti?
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.