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

 

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

Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

Îåêßíçóå áðü ôï ìÝëïò josetedi. Τελευταία δημοσίευση από το μέλος nsouflis στις 19-12-2006, 09:13. Υπάρχουν 12 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  16-12-2006, 21:28 22362

    Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    Παιδιά όποιος μπορεί μια βοήθεια...

    Υπάρχει τρόπος κάνοντας ένα select σε πίνακα να εμφανίζονται όλοι οι κοινοί (ελληνικοί και λατινικοί) χαρακτήρες;

    Για να το εξηγήσω καλύτερα αν δώσω το παρακάτω

    select * from customers where name like 'A*'

    να εμφανιστούν όλες οι εγγραφές που αρχίζουν από Α είτε ελληνικό είτε λατινικό;

     

  •  16-12-2006, 22:13 22363 σε απάντηση της 22362

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    Δεν θα δουλέψει το like 'A*' or like 'A*' με ελληνικό και λατινικό Α αντίστοιχα;
  •  16-12-2006, 22:33 22364 σε απάντηση της 22362

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    Οχι θα ήθελα με μια αναζήτηση να μου εμφανίσει και τα δύο αποτελέσματα.
  •  16-12-2006, 23:13 22366 σε απάντηση της 22364

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    Αυτό που ζητάς δε γίνεται με μια συνθήκη, γιατί το LIKE δεν υποστηρίζει κανονικές regular expressions. Θα μπορούσες να έχεις στον πίνακά σου μια calculated στήλη που μετατρέπει όλους τους κοινούς χαρακτήρες σε λατινικούς ή ελληνικούς και να κάνεις την αναζήτηση εκεί πάνω, αλλά δεν ξέρω αν αξίζει τον κόπο.

    Διάφορες εφαρμογές, για να αντιμετωπίσουν το ζήτημα αυτό, σε ορισμένα πεδία (π.χ. string κωδικούς), μετατρέπουν τα κοινά γράμματα σε όλα ελληνικά για να είναι μονοσήμαντες οι αναζητήσεις.

    Νατάσα Μανουσοπούλου
  •  16-12-2006, 23:29 22368 σε απάντηση της 22362

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    Δοκίμασα και μετέτρεψα όλους τους κοινούς χαρακτήρες σε λατινικούς αλλά δεν εξυπηρέτησε τους τελικούς χρήστες, οι οποίοι είχαν συνηθίσει το dos περιβάλλον και δυσκολεύονται να καταλάβουν τη διαφορά ανάμεσα σε Α ελληνικό και Α λατινικό. Πάντως αν δεν υπάρχει κάποια άλλη λύση θα ήθελα μια βοήθεια για το πως θα μπορούσα να μετατρέπω αυτόματα σε μια άλλη στήλη τους χαρακτήρες. Ευχαριστώ.....
  •  17-12-2006, 00:31 22378 σε απάντηση της 22368

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    Εννοείς μέσα από το πρόγραμμά σου, πριν κάνει insert/update στη βάση ή θέλεις ένα TSQL script για να προσθέσεις τη στήλη και κατόπιν να μετατρέψεις τους χαρακτήρες;
    Vir prudens non contra ventum mingit
  •  17-12-2006, 10:01 22382 σε απάντηση της 22362

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    Μέσα από το πρόγραμμα. Την ώρα που θα κάνει insert/update να κάνω εγώ σε ένα άλλο πεδίο τη μετατροπή.
  •  17-12-2006, 12:52 22389 σε απάντηση της 22382

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    H βασική ιδέα είναι να φτιάξεις ένα πίνακα αντιστοίχισης όπου για κάθε χαρακτήρα θα έχεις και τον αντίστοιχο χαρακτήρα αντικατάστασης. Κατόπιν, θα ψάχνεις το string που σε ενδιαφέρει και θα τους αλλάζεις.

    Το πως θα το κάνεις αυτό εξαρτάται από την γλώσσα προγραμματισμού που χρησιμοποιείς, ωστόσο φαντάσου ότι με έναν τέτοιο αλγόριθμο μπορείς να βοηθήσεις ακόμα περισσότερο την αναζήτησή σου αλλάζοντας και τα τονούμενα σε άτονα κλπ...
    Vir prudens non contra ventum mingit
  •  17-12-2006, 17:45 22399 σε απάντηση της 22362

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    Διακρίνω 2 περιπτώσεις:

    Πρώτη περίπτωση:

    Αν από το πρόγραμμά σου ελέγχεις το insert/update τότε μπορείς να ελέγξεις τα Α,Β,Ε, κλπ δηλαδή τα κοινά γράμματα ελληνικού αγγλικού ώστε μέσα στην βάση να υπάρχουν π.χ. μόνο τα αγγλικά Α,Β,Ε κ.λ.π.

    Στη συνέχεια με τον πίνακα αντιστοίχισης και find replace σε κάθε string αναζήτησης θα κάνεις την δουλειά.

    Δεύτερη περίπτωση (και πιο περίπλοκη)

    Aν τα δεδομένα ήδη προυπάρχουν τότε το πρόβλημα γίνεται πιο δύσκολο. Γιατί αν έχει ανακατεμένα αγγλικά - ελληνικά μέσα στη βάση πρέπει να ψάχνεις για όλους τους δυνατούς συνδυασμούς.

    Έτσι π.χ. αν θες να ψάξεις για το 'ΑΒ*' τότε έχεις 4 δυνατούς συνδυασμούς που πρέπει να τους βάλεις σε συνθήκη or.

    Για την ακρίβεια οι δυνατοί συνδυασμοί κάθε φορά είναι τουλάχιστον n-τετράγωνο όπου n ο αριθμός των χαρακτήρων εκτός του * μέσα στο string αναζήτησης.

    Σε αυτή την περίπτωση πρέπει να φτιάξεις το string αναζήτησης με αναδρομική διαδικασία.

    Τέλος δεν ξέρω την ακριβή φύση του προβλήματος και αν θα μπορούσε να βοηθήσει λύση full text search.
    Harry Tsavdaris
  •  17-12-2006, 19:55 22404 σε απάντηση της 22362

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    Ενας φωνητικός αλγόρυθμος θα έλεινε το πρόβλημμα . Αρκή βεβαίως να κρατάς σε μια στήλη τη μετατροπή του String σου.
  •  17-12-2006, 20:02 22405 σε απάντηση της 22404

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    Το κακό είναι ότι τα δεδομένα προυπάρχουν στη βάση και φυσικά καταχωρούνται συνεχώς νέα. Πάντως από ότι καταλαβαίνω αυτή τη δυνατότητα δεν την υποστηρίζει γενικώς ο sql server και τελικά μάλλον θα καταφύγω σε καμμία πατέντα. Το μόνο που δεν έχω δοκιμάσει ακόμα είναι το full text search. Θα δοκιμάσω και βλέπουμε. Τώρα όσο για το φωνητικό αλγόριθμο... sorry gilbert αλλά οι γνώσεις μου δεν φτάνουν μέχρι εκεί.
  •  18-12-2006, 18:41 22456 σε απάντηση της 22362

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    josetedi,

    ούτε αυτό θα σε σώσει.

    1. Στο KeyDown Event του TextBox μπορεις να περνεις το int του ASCII Που αντοιστιχεί στο γράμμα που πατηθηκε! (Αυτό για το Insert και Update, Δες τον ASCII πινακα για περισσοτερα). Ετσι οταν καποιος έχει Αγγλικά ή Ελληνικά (οτι απαιτή η εφαρμογή) Κάνει κοκκινο το ForeColor, Και ετσι δεν θα υπάρχει περίπτωση τα καινούργια στοιχεία να έχουν το πρόβλημα που εχεις τώρα!

    2. Για τα υπαρχοντα στοιχεία.... μόνο ένα Utility Θα σε σώσει.

    Αυτα τα ολίγα

    Νασος
    "Success is the ability to go from one failure to another with no loss of enthusiasm."
    Winston Churchill

    "Quality means doing it right when no one is looking."
    Henry Ford

  •  19-12-2006, 09:13 22465 σε απάντηση της 22362

    Απ: Αναζήτηση με ελληνικούς και λατινικούς Χαρακτήρες

    Αν σε βοηθάει εγώ αντιμετώπισα παρόμοιο θέμα φτιάχνοντας μια  user defined function  και έναν πίνακα αντιστοίχισης αγγλικών με ελληνικών χαρακτήρων . Έτσι καλώντας την πέρναγα τα column όπου υπήρχαν μπερδεμένοι λατινικοί και ελληνικοί χαρακτήρες έπαιρνα πάντα τους αντίστοιχους λατινικούς για να τους χρησιμοποιήσω όπου χρειάζομαι .

    Αν σου φανεί χρήσιμο
    CREATE FUNCTION DBO.TRANSLATEME (@INP AS VARCHAR(20))
    RETURNS  VARCHAR(20) AS 
    BEGIN
    DECLARE @LENGTH AS integer
    declare @counter as integer
    declare @outword as varchar(2)
    declare @word as varchar(20)
    SET  @counter = 1
    SET @WORD = ''
    SET @LENGTH = LEN(RTRIM(@INP)) + 1
    while (@LENGTH >=  @COUNTER)
    begin
             select @outword =  ISNULL(eng,'%')  from translate where gre = substring(RTRIM(@INP),@counter,1)
         SELECT  @word = @word +@outword
           
         SET @COUNTER = @COUNTER + 1
          SET @OUTWORD = ''
    end
    return  @WORD
    END

    και ο Πίνακας αντιστοίχισης (translate ) αποτελείται από δύο στήλες ( eng , gre ) με την παράθεση λατινικών και ελληνικών χαρακτήρων ανα γραμμή .

    Μπορείς ίσως να το προσαρμόσεις ανάλογα με την δικιά σου περίπτωση .
    Ελπίζω να σου φανεί χρήσιμο


Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems