none
Cercare Valore su tutte le colonne RRS feed

  • Domanda

  • Salve, è possibile effettuare una ricerca di un valore su tutte le colonne di una tabella?... una cosa del tipo...

    "".......

    SELECT        *
    FROM            TESTEDOCUMENTI
    WHERE Any Column LIKE 'Something%'

    ""........


    Marco

    lunedì 11 febbraio 2019 09:56

Risposte

  • Usando TSQL direttamente non mi risulta...

    Puoi scrivere

    declare @ricerca nvarchar(32) set @ricerca = '%CIAO%' SELECT

    ID,

        DESCRIZIONE,
        RAGIONESOCIALE
    FROM Miatabella
    WHERE
        ID Like @ricerca OR DESCRIZIONE like @ricerca OR RAGIONESOCIALE like @ricerca
    


    Non c'è modo di fare altrimenti salvo fare una QUery Union con una sola colonna oppure "sommare" i contenuti delle colonne in un unica stringa, ma in questo caso attenzione ai NULL perché se sommi NULL a qualsiasi stringa il risultato è null

    SELECT
       CAMPONE
    FROM
    ( SELECT
        ID+
        DESCRIZIONE+
        RAGIONESOCIALE AS Campone
    FROM MiaTabella ) tb
    WHERE
        CAMPONE Like @ricerca 

    Per evitare problemi se uno dei campi fosse null diventa

    SELECT
       CAMPONE
    FROM
    ( SELECT
        isnull(ID,'')+
        isnull(DESCRIZIONE,'')+
        isnull(RAGIONESOCIALE,'') AS Campone
    FROM MiaTabella ) tb
    WHERE
        CAMPONE Like @ricerca 
    Ovviamente se hai molti campi diviene piuttosto complicato da fare e manutenere


    Sabrina C. - http://www.dotnetwork.it

    lunedì 11 febbraio 2019 14:23
  • Ciao,

    purtroppo il tipo di interrogazione che cerchi di effettuare non è propriamente da database relazionale. Oltre alle soluzioni proposte, puoi pensare a creare un campo calcolato con all'interno un JSON e poi passarlo all'applicazione per farlo ricercare, oppure anche direttamente con le funzioni builtin di SQL Server stesso (ma dipende dalla versione di SQL Server, senza SQL Server 2016 hai solo la possibilità di salvarlo e non di interrogarlo).


    Alessandro Alpi - Data Platfomr MVP - CTO & Co-Founder Engage IT Services S.r.l.

    domenica 17 febbraio 2019 22:29
    Moderatore

Tutte le risposte

  • Usando TSQL direttamente non mi risulta...

    Puoi scrivere

    declare @ricerca nvarchar(32) set @ricerca = '%CIAO%' SELECT

    ID,

        DESCRIZIONE,
        RAGIONESOCIALE
    FROM Miatabella
    WHERE
        ID Like @ricerca OR DESCRIZIONE like @ricerca OR RAGIONESOCIALE like @ricerca
    


    Non c'è modo di fare altrimenti salvo fare una QUery Union con una sola colonna oppure "sommare" i contenuti delle colonne in un unica stringa, ma in questo caso attenzione ai NULL perché se sommi NULL a qualsiasi stringa il risultato è null

    SELECT
       CAMPONE
    FROM
    ( SELECT
        ID+
        DESCRIZIONE+
        RAGIONESOCIALE AS Campone
    FROM MiaTabella ) tb
    WHERE
        CAMPONE Like @ricerca 

    Per evitare problemi se uno dei campi fosse null diventa

    SELECT
       CAMPONE
    FROM
    ( SELECT
        isnull(ID,'')+
        isnull(DESCRIZIONE,'')+
        isnull(RAGIONESOCIALE,'') AS Campone
    FROM MiaTabella ) tb
    WHERE
        CAMPONE Like @ricerca 
    Ovviamente se hai molti campi diviene piuttosto complicato da fare e manutenere


    Sabrina C. - http://www.dotnetwork.it

    lunedì 11 febbraio 2019 14:23
  • Grazie mille!! si concordo con te. complicato e difficile nel tempo... 
    Pensavo ci fosse una soluzione differente da quanto pensavo di applicare.

    Marco

    lunedì 11 febbraio 2019 14:57
  • Quel tipo di ricerca io ce l'ho quasi gratis sul componente Grid che utilizzo normalmente per le mie applicazioni, la ricerca su tutti i campi funziona sul "recordset" collegato alla grid

    ho messo le virgolette perché nel mio caso è una collection di oggetti.

    https://help.syncfusion.com/wpf/sfdatagrid/search

    Questo è l'oggetto in questione ;)


    Sabrina C. - http://www.dotnetwork.it

    martedì 12 febbraio 2019 09:39
  • Ciao,

    purtroppo il tipo di interrogazione che cerchi di effettuare non è propriamente da database relazionale. Oltre alle soluzioni proposte, puoi pensare a creare un campo calcolato con all'interno un JSON e poi passarlo all'applicazione per farlo ricercare, oppure anche direttamente con le funzioni builtin di SQL Server stesso (ma dipende dalla versione di SQL Server, senza SQL Server 2016 hai solo la possibilità di salvarlo e non di interrogarlo).


    Alessandro Alpi - Data Platfomr MVP - CTO & Co-Founder Engage IT Services S.r.l.

    domenica 17 febbraio 2019 22:29
    Moderatore