Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    [SqlServer] Splittare una stringa

    Ciao ragazzi

    Il mio problema è questo.
    All'interno di una query ho la necessità di effettuare una WHERE su una parte di un campo del db; dovrei riuscire a splittare la stringa e prendere in cosiderazione solo la parte che mi serve per filtrare i dati.


    La query è questa:
    codice:
    SELECT 
    [Descrizione cpu].[nome cpu], [Descrizione cpu].Modificato, 
    [Descrizione cpu].Intervallo 
    FROM 
    [Tipologia Nodi] INNER JOIN [Descrizione cpu] ON 
    [Tipologia Nodi].[Tipologia nodo]=[Descrizione cpu].[Tipologia cpu] 
    INNER JOIN [Descrizione centri] ON [Descrizione cpu].[nome centro] =
    [Descrizione centri].[nome centro] 
    WHERE 
    ([Descrizione centri].[nome centro] = '0.1') AND
    ([nome cpu] = '1')
    Ora, il campo [nome cpu] contiene dati in formato TAG: 0.12.56 ad esempio. Ho la necessità di filtrare i dati in base alla prima parte da sinistra della stringa, nell'esempio quindi "0".
    Chiaramente posso avere anche 2 o 3 numeri prima del . di conseguenza devo trovare una soluzione che vada bene in tutti i casi.

    Spero di essere stata chiara, e vi ringrazio fin d'ora per le risposte.


    buon forum
    lady

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    where nome cpu like '1%'
    dovrebbe bastare

  3. #3
    Originariamente inviato da floyd
    where nome cpu like '1%'
    dovrebbe bastare
    ussignur che figura barbina!!!


    floyd grazie mille... devo essermi rimbecillita del tutto. come diavolo avrò fatto a non pensarci!!! era così ovvio!!!

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  4. #4
    Ecco perchè non ho pensato alla LIKE... non va bene non può funzionare.


    Se ho un campo "nome cpu" con valore 1.25.3 e un'altro con valore 12.1.8
    se l'utente chiede la cpu con valore "1. ..." con la like me le tira fuori tutte e due e non va bene.
    per questo cercavo un modo di splittare la stringa, così da avere esattamente tutto ciò che ci sta prima del punto.

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  5. #5
    Utente di HTML.it L'avatar di Cozza
    Registrato dal
    Jan 2001
    Messaggi
    467
    like '1.%'

    p.s. che brutta cosa gli spazi nei nomi di campo
    Ho mille libri sotto il letto non leggo più
    ho mille sogni in un cassetto non lo apro più
    parlo da solo e mi confondo e penso
    che in fondo sì sto bene così

  6. #6
    Originariamente inviato da Cozza
    like '1.%'

    p.s. che brutta cosa gli spazi nei nomi di campo
    ciao Cozza.

    senti, non posso utilizzare questa tua soluzione perchè il numero viene immesso dall'utente.
    ciò significa che non saprò mai se inserisce un parametro completo o solo parte di esso.

    non c'è proprio modo di splittare la stringa?


    ps.
    sono d'accordo con te... gliel'ho detto di modificare tutto il db ma non mi danno retta

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  7. #7
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    .....WHERE Left([nome CPU],2) = '1.'

  8. #8
    Originariamente inviato da comas17
    .....WHERE Left([nome CPU],2) = '1.'
    ciao comas

    ti ringrazio x la risposta ma non credo che possa andar bene. la parte al sinistra del numero può avere più di un carattere; non ha un numero definito di caratteri, quindi nemmeno la left può andar bene.

    grazie lo stesso

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  9. #9
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    Originariamente inviato da ladyBlu
    ciò significa che non saprò mai se inserisce un parametro completo o solo parte di esso.
    dunque la like è corretta

  10. #10
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    ....ah ok


    Se vuoi trovare tutto quello che c'è prima del punto (anche senza sapere quanti caratteri ci sono) puoi usare


    Left([nome cpu],charindex('.',[nome cpu],0)-1)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.