Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Αναζήτηση "οποιαδήποτε λέξης" στον SQL Server 2000 με τελεστή Like. Γίνεται;

Îåêßíçóå áðü ôï ìÝëïò deykas. Τελευταία δημοσίευση από το μέλος imanos στις 08-01-2007, 13:29. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  07-01-2007, 18:55 23166

    Αναζήτηση "οποιαδήποτε λέξης" στον SQL Server 2000 με τελεστή Like. Γίνεται;

    Καλησπέρα. Θα ήθελα τη βοήθειά σας για μία αναζήτηση σε SQL server 2000:
    Έχω ένα πεδίο στη βάση nvarchar. Θέλω να κάνω αναζήτηση με Like στο πεδίο αυτό με πάνω μία λέξεις π.χ.:"Βάση Δεδομένων" και θέλω να μου επιστρέφει τις εγγραφές που έχουν οποιαδήποτε από τις δύο λέξεις ή και τις δύο. Η εντολή παράγεται ως εξής :
    like '%Βάση Δεδομένων%'. Έτσι όμως δεν μου φέρνει π.χ. τις εγγραφές που έχουν μόνο το "Βάση" ή μόνο το "Δεδομένων". Δηλ. ψάχνω τρόπο να διαχωρίζω σε λέξεις τη φράση που βάζω για αναζήτηση ώστε να είναι εφικτή και χωριστή αναζήτηση.
    Καμία ιδέα;
    Αφού το πεδίο είναι nvarchar με fulltext search δεν αγγίζω, σωστά ή κάνω λάθος;
    Ευχαριστώ.
    και καλή χρονιά σε όλους.
  •  07-01-2007, 19:26 23171 σε απάντηση της 23166

    Απ: Αναζήτηση "οποιαδήποτε λέξης" στον SQL Server 2000 με τελεστή Like. Γίνεται;

    Μπορείς να γράψεις like '%Βάση%' or like '%Δεδομένων%΄. Μπορείς άνετα πάντως να χρησιμοποιήσεις και full text search
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  07-01-2007, 20:35 23173 σε απάντηση της 23171

    Απ: Αναζήτηση "οποιαδήποτε λέξης" στον SQL Server 2000 με τελεστή Like. Γίνεται;

    Θα πρέπει όμως να χωρίζω κάθε φορά τη φράση στις αντίστοιχες λέξεις. Θα προσπαθήσω...και με full text search
    thanks
  •  08-01-2007, 12:54 23208 σε απάντηση της 23173

    Απ: Αναζήτηση "οποιαδήποτε λέξης" στον SQL Server 2000 με τελεστή Like. Γίνεται;

    Νομίζω ότι αυτό που προτείνει ο pkanavos είναι το μόνο που μπορείς να κάνεις


    Ιωάννης Μανουσάκης
  •  08-01-2007, 13:29 23214 σε απάντηση της 23208

    Απ: Αναζήτηση "οποιαδήποτε λέξης" στον SQL Server 2000 με τελεστή Like. Γίνεται;

    Αν πάλι θέλεις να χωρίζεις τίς φράσεις μπορείς να χρησιμοποιήσεις μιά UDF που έχω δημοσιεύσει.

    http://www.dotnetzone.gr/cs/blogs/imanoussakis/archive/2006/02/11/9534.aspx

    και να την καλέσεις όπως παρακάτω

    Declare @vStr varchar(80)

    Declare @DynSQL varchar(255),@pos int

    select @vStr='Βάση,Δεδομένων',@DynSQL=' FieldName like ''%'

    while @vStr<>''

    begin

    set @pos=master.dbo.FnBreakDelimited(@vStr,',')

    if @pos>0

    begin

    set @DynSQL=@DynSQL+substring(@vStr,1,@pos-1)+'% or FieldName like ''%'

    set @vStr=substring(@vStr,@pos+1,len(@vStr))

    end

    else

    if @pos=0

    begin

    set @DynSQL=@DynSQL+@vStr

    set @vStr=''

    end

    end

    set @DynSQL=substring(@DynSQL,1,len(@DynSQL))+'%'''

    --Αποτέλεσμα

    FieldName like '%Βάση% or FieldName like '%Δεδομένων%'

    οπότε κατόπιν κάνουμε το εξής

    Declare @BaseQuery varchar(255)

    set @BaseQuery ='select * from tableName where '

    exec ( @BaseQuery +@DynSQL)

    Προσοχή πού θα δημιουργήσεις την UDF εγώ την χρησιμοποιώ στην master για να μπορώ να έχω πρόσβαση από οποιαδήποτε άλλη βάση .
    Ιωάννης Μανουσάκης
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems