Empty spaces in mysql table

Συζητήσεις για την βάση δεδομένων MySQL και το phpMyAdmin

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
VirusP
Δημοσιεύσεις: 116
Εγγραφή: 13 Μάιος 2002 16:48
Τοποθεσία: Nea Filadelfeia
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από VirusP » 05 Ιαν 2008 10:27

Έχω μια βάση δεδομένων σε mysql 5 και μέσα σε ένα πεδίο ενός πίνακα υπάρχουν πολλές εγγραφές με κενά

π.χ. Location: Athens, Greece (αντί για Location: Athens,Greece)

Ψάχνω για κάποιο τρόπο να δραγράψω αυτά τα κενά μαζικά από όλο το πεδίο του πίνακα Location. Μπορεί κάποιος να βοηθήσει? Για διαχείριση της βάσης έχω το Navicat και το PHPMyAdmin.

Ευχαριστώ πολύ και Καλή Χρονιά!

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1947
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από Alice_Cooper » 05 Ιαν 2008 11:35

an kses kati apo programatismo den einai tpt ...
de thelei kai polla na kses ....
travas 1 egrafh ....
prerneis ena ena ta letter apo kathe pedio
kai ta petas se mia metavlith, ektos tou an einai space ...
kai meta diorhonis thn egrafh pou molis meteferes ...
travas thn epomenh ... k.o.k.
mporeis na to kaneis px se php pou einai poio aplo

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από cherouvim » 05 Ιαν 2008 11:43

Γιατί θες να το κάνεις αυτό; Τι χρήση έχει αυτό το combined πεδίο;

Αν είναι απλά για εμφάνιση, μπορείς να τα trimάρεις στο τέλος, στην εκτύπωση, και να αφήσεις τη βάση ως έχει.

Άβαταρ μέλους
VirusP
Δημοσιεύσεις: 116
Εγγραφή: 13 Μάιος 2002 16:48
Τοποθεσία: Nea Filadelfeia
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από VirusP » 05 Ιαν 2008 11:53

cherouvim έγραψε:Γιατί θες να το κάνεις αυτό; Τι χρήση έχει αυτό το combined πεδίο;

Αν είναι απλά για εμφάνιση, μπορείς να τα trimάρεις στο τέλος, στην εκτύπωση, και να αφήσεις τη βάση ως έχει.
Ναι, αλλά πώς το κάνω αυτό? :roll:

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1947
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από Alice_Cooper » 05 Ιαν 2008 11:54

Κώδικας: Επιλογή όλων

ereg_replace( ' +', '', $string ); 
dinei string xoris spaces ... (an milame gia php)

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από cherouvim » 05 Ιαν 2008 11:56

Σε java κάπως έτσι:

Κώδικας: Επιλογή όλων

String value = "Athens, Greece";    // get this from db
String[] values = value.split(","); // split values
values[0].trim();                   // "Athens";
values[1].trim();                   // "Greece";

Άβαταρ μέλους
VirusP
Δημοσιεύσεις: 116
Εγγραφή: 13 Μάιος 2002 16:48
Τοποθεσία: Nea Filadelfeia
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από VirusP » 05 Ιαν 2008 12:05

Συγνώμη, αλλά τα παραπάνω γίνονται απευθείας στη βάση δεδομένων?? Μέσα από PHPMYADMIN?

Άβαταρ μέλους
Alice_Cooper
Δημοσιεύσεις: 1947
Εγγραφή: 11 Μάιος 2007 00:33
Τοποθεσία: Ioannina
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από Alice_Cooper » 05 Ιαν 2008 12:10

sostos o cherouvim ... an thes xorismeno .. se php

Κώδικας: Επιλογή όλων

$sting="Athens, Greece";
$pieces = explode(", ", $string);
echo $pieces[0]; // "Athens"
echo $pieces[1]; // "Greece"
nop sto phpAdmin ... an to thes se page ta kaneis afta...
an thes pes mas ti thes na kaneis
kai vlepoume ti allagh tha exoun oi apantiseis ;)

Άβαταρ μέλους
VirusP
Δημοσιεύσεις: 116
Εγγραφή: 13 Μάιος 2002 16:48
Τοποθεσία: Nea Filadelfeia
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από VirusP » 05 Ιαν 2008 13:10

Θέλω να σβήσω μέσα στη βάση τα κενά αυτά. Όχι σε σελίδα.

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από lakritidis » 05 Ιαν 2008 13:27

Κώδικας: Επιλογή όλων

update table set field = 
concat(
trim(substring_index(field, ',', 1)), ',', trim(substring_index(field, ',', -1))
) WHERE POSITION(',' IN field) > 0

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από cherouvim » 05 Ιαν 2008 13:56

lakritidis έγραψε:

Κώδικας: Επιλογή όλων

update table set field = 
concat(
trim(substring_index(field, ',', 1)), ',', trim(substring_index(field, ',', -1))
) WHERE POSITION(',' IN field) > 0
Αυτό δεν θα δουλέψει για τιμές σαν τις παρακάτω, σωστά;

Κώδικας: Επιλογή όλων

 foo  , bar, example
 foo  , bar, example, test

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από lakritidis » 05 Ιαν 2008 14:11

Σωστός. Έχεις δίκιο.

Αυτό trim(substring_index(field, ',', 1)) παίρνει το string πριν το πρώτο comma
και αυτό trim(substring_index(field, ',', -1)) το string μετά το τελευταίο comma.

Άρα θα χαθεί η δεύτερη τιμή

Κώδικας: Επιλογή όλων

foo, bar, example -> foo,example
Υποθέτω ότι υπάρχει μόνο ένα comma στο πεδίο. Αν υπάρχουν πεδία με δύο comma, καλύτερα να μην εκτελεστεί η εντολή.

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από lakritidis » 05 Ιαν 2008 14:37

OK βελτιωμένη version

Θα απαλείψει τα κενά μόνο στο πρώτο comma, αλλά θα αφήσει το υπόλοιπο ανεπηρέαστο.

Κώδικας: Επιλογή όλων

update table set field =
concat(
trim(substring(field, 1, instr(field, ',') - 1)), ',', 
trim(substring(field, instr(field, ',') + 1, length(field) - instr(field, ',')))
) WHERE POSITION(',' IN field) > 0
px

Κώδικας: Επιλογή όλων

foo->foo
foo, bar -> foo,bar // Φεύγει το κενό
foo, bar, example -> foo,bar, example // Φεύγει μόνο το πρώτο κενό

Άβαταρ μέλους
VirusP
Δημοσιεύσεις: 116
Εγγραφή: 13 Μάιος 2002 16:48
Τοποθεσία: Nea Filadelfeia
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από VirusP » 05 Ιαν 2008 15:29

lakritidis έγραψε:OK βελτιωμένη version

Θα απαλείψει τα κενά μόνο στο πρώτο comma, αλλά θα αφήσει το υπόλοιπο ανεπηρέαστο.

Κώδικας: Επιλογή όλων

update table set field =
concat(
trim(substring(field, 1, instr(field, ',') - 1)), ',', 
trim(substring(field, instr(field, ',') + 1, length(field) - instr(field, ',')))
) WHERE POSITION(',' IN field) > 0
px

Κώδικας: Επιλογή όλων

foo->foo
foo, bar -> foo,bar // Φεύγει το κενό
foo, bar, example -> foo,bar, example // Φεύγει μόνο το πρώτο κενό
Χίλια συγνώμη αλλά κάτι κάνω λάθος :cry:

Ας υποθέσουμε ότι η βάση λέγεται database1, ο πίνακας table1 και το πεδίο field1, πώς θα εκτελεστεί το ερώτημα στην mysql?

Ευχαριστώ!!!

lakritidis
Δημοσιεύσεις: 401
Εγγραφή: 04 Αύγ 2005 14:35
Τοποθεσία: Katerini
Επικοινωνία:

Empty spaces in mysql table

Δημοσίευση από lakritidis » 05 Ιαν 2008 15:40

Όπου λεει table θα βάλεις table1 και όπου λέει field θα βάλεις field1.

Μία ακόμα απλή λύση που θα αντικαταστησει όλα τα ',<space>' με ',' είναι:

Κώδικας: Επιλογή όλων

update table set field = replace&#40;field, ', ', ','&#41;;

Απάντηση

Επιστροφή στο “MySQL”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες