heavyaris Δημοσ. 21 Σεπτεμβρίου 2010 Δημοσ. 21 Σεπτεμβρίου 2010 παιδιά, έχω μια βάση, που είναι διάφοροι πελάτες κάποιου κυρίου. τα δεδομένα τα έχω κάνει import απο xls αρχείο που μου δώθηκε. το κακό είναι όμως ότι, αυτό το xls, είχε ένα πεδίο: "επωνυμία/όνομα" στο οποίο γίνεται ένας αχταρμάς, δηλαδή περιέχει: όνομα ή επίθετο ή αν είναι συνέταιροι 2 ονόματα κ ένα ή 2 επίθετα, ή επωνυμία εταιρείας, ή όλα μαζί σε ακανόνιστη σειρά. μερικά παραδείγματα περιεχομένων του πεδίου είναι: (τυχαια ονόματα) >Όνομα/επωνυμία: ηλιας νικολάου νικολάου ηλίας αφοι νικολάου Α.Ε ηλίας νικολάου κ ιυος νικολάου ηλίας - ηλιαδου μαρια "το λουλουδι" - νικολάου ηλίας και οι παραλλαγές όπως καταλαβαίνετε δεν έχουν τελειωμό. Αυτό που θέλω είναι με ένα ερώτημα στην βάση να βγαίνουν τα ονόματα, έτσι στην προσπάθεια μου χρησιμοποίησα το like >SELECT * FROM clients where name like '%ηλιας%' το οποίο επιφέρει δικαιολογημένα τελείως λανθασμενα αποτελέσματα μερικες φορές όπως: εάν ψάχνω το όνομα άρης, επιστρέφει εγγραφές του στύλ: γρυπάρης ηλίας ή βούλγαρης ιωάννης Γνωρίζω οτι φυσικά το αυτονόητο είναι να είναι τα πεδία ξεχωριστα (όνομα, επώνυμο, εταιρεία) αλλά και έτσι να ήταν, πάλι όταν κάποιος ήταν συνέταιρος θα υπήρχαν 2 η περισσότερα ονόματα σε ένα πεδίο. Εκτός αυτού, δεν υπάρχει περίπτωση να κάτσω να τα καθαρίσω γιατι είναι 6000 εγγραφές. υπάρχει περίπτωση να βγάλω καμμιά άκρη; ευχαριστώ.
subdee Δημοσ. 21 Σεπτεμβρίου 2010 Δημοσ. 21 Σεπτεμβρίου 2010 αν βάλεις κενό πριν και κενό μετά λογικά δε θα σου βγάζει κομμάτια λέξεων SELECT * FROM clients where name like '% ηλιας%' or name like '%ηλιας %'
Tompgr Δημοσ. 21 Σεπτεμβρίου 2010 Δημοσ. 21 Σεπτεμβρίου 2010 Γιατι ψαχνεις το Ηλιας που ειναι ονομα και δεν ψαχνεις το Νικολαου πχ SELECT * FROM clients where name like '%νικολάου%'; το επιθετο δεν θα εχει πολλα ομοια του ---------- Προσθήκη στις 11:54 ---------- Προηγούμενο μήνυμα στις 11:43 ---------- Για δοκιμασε αυτο: SELECT * FROM clients where name like '%νικολάου_ηλίας%' or name like '%ηλίας_νικολάου%';
heavyaris Δημοσ. 21 Σεπτεμβρίου 2010 Μέλος Δημοσ. 21 Σεπτεμβρίου 2010 δυστυχως φίλε επιστρέφει και άλλα επίθετα όπως ΚΑΚΑΡΗΣ ΛΑΣΚΑΡΗΣ ΤΣΑΛΔΑΡΗΣ ΓιΑΝΝΑΡΗΣ κλπ εαν δώσω το άρης.. αυτό όμως που μου πρότειναν δουλέυει: >SELECT * FROM clients where name REGEXP '[[:<:]](ΑΡΗΣ)[[:>:]]'
Tompgr Δημοσ. 21 Σεπτεμβρίου 2010 Δημοσ. 21 Σεπτεμβρίου 2010 REGEXP???? πρωτη φορα το βλεπω αυτο στην sql αλλα αφου δουλευει ok
attsifte Δημοσ. 21 Σεπτεμβρίου 2010 Δημοσ. 21 Σεπτεμβρίου 2010 δυστυχως φίλε επιστρέφει και άλλα επίθετα όπως ΚΑΚΑΡΗΣ ΛΑΣΚΑΡΗΣ ΤΣΑΛΔΑΡΗΣ ΓιΑΝΝΑΡΗΣ κλπ εαν δώσω το άρης.. αυτό όμως που μου πρότειναν δουλέυει: >SELECT * FROM clients where name REGEXP '[[:<:]](ΑΡΗΣ)[[:>:]]' Δεν θές το ίδιο και για το 'ΑΡΗΣ? Άν είναι γραμμένο σαν Γιαννάρης ή Γιανναρης στο φέρνει; Δές και αυτό > Select * from CLIENTS with (nolock) where upper(name) like upper('%αρης%') or upper(name) like UPPER('%άρης%') or upper(name) like UPPER('%άρησ%') or upper(name) like UPPER('%αρης%')
Επισκέπτης Δημοσ. 21 Σεπτεμβρίου 2010 Δημοσ. 21 Σεπτεμβρίου 2010 REGEXP????πρωτη φορα το βλεπω αυτο στην sql αλλα αφου δουλευει ok το like με wildcard (%) τι νομίζεις είναι;
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.