Newsgroup: it.comp.www.php
Titolo: MySQL - Ordinare campo varchar come se fosse numerico

è possibile con una funzione MySQL ?
mi trovo ad avere dei valori numerici in un campo varchar che dovrei
ordinare progressivamente.
Ringrazio anticipatamente tutti  coloro mi vorranno aiutare,
Saluti, Marco

 č possibile con una funzione MySQL ?

aggiungi la clausola "order by nomecampo"
perň in questo caso temo che "11" sia prima di "2" per esempio
ciao
Alesi_27

 però in questo caso temo che "11" sia prima di "2" per esempio
infatti :-(
cercavo qualcosa del timpo order by CONVERTI_IN_NUMERO(nomecampo).
in modo da "forzare" l'ordinamento facendolo considerare come numerico.
In MS SQLServer mi sembra ci sia un comando del genere...
Grazie cmq.
Marco

 č possibile con una funzione MySQL ?

Prova dare un'occhiata a:
http://www.mysql.com/doc/en/Cast_Functions.html
Fammi sapere se riesci a convertire il tipo... non ho mai provato.
bye
--
David

 Fammi sapere se riesci a convertire il tipo... non ho mai provato.
Grazie, mi sa che avrei risolto se non fosse per...
The CAST() and CONVERT() functions were added in MySQL 4.0.2.
Sig :-(.
mi devo accertare che il mio hosting abbia aggiornato il db prima di
testare.
1000 grazie cmq,
Marco

 ha scritto nel messaggio
news:b8r9o3$v93$1...@newsreader.mailgate.org...

appunto e c'e' pure in mysql ... leggi le funzioni di conversione
ricorda che la funzione tonumber o simili ti restituisce solo il numero
dall'inizio della stringa fino al primo carattere non numerico di essa ...
quindi 12ase234 diventera' 12 e che qoiw1234 dara' 0 o nullo
poi non ho capito l'utilita' di memorizzare un numero in formato stringa e
poi tentare ordinamenti su esso in formato stringa, non potevi gia' crearlo
numero ?

 ha scritto nel messaggio
news:b8rg6h$87g$1...@newsreader.mailgate.org...

bhe se sei in sviluppo si spera che l'host al momento dell'upload abbia
aggiornato all'ultimo stabile ... gli host che rimangono fermi 2 anni alle
stesse versioni sanno un po troppo di fancazzisti
soprattutto avendo a disposizzione l'opens e versioni stabili che chiudono
molti bug
mysql 4.0.12 e' qualcosa di portentoso

 č possibile con una funzione MySQL ?

Ciao il modo di risolvere il tuo problema puo dipendere dalla versione del 
db. Io, pero' sulla 3.X ho risolto usando il trucco di tenere il dato in 
due campi differenti in formato differente. Uno usato per l'ordinamento e' 
l'altro per il retrieving.
Questo approccio e' valido solo e solo se hai spazio oppure se i record sono 
pochi.
Su mysql 4.x non ho molta esperienza e, non so dirti.
ciao

E cosa ci fanno dei numeri, da gestire come numeri, in un campo varchar?
Ciao
Marco

 numero ?
L'utilità è zero.
i dati (85.000 records) provengono da un file access con cui ho avuto
problemi
di importazione in MySQL per i campi decimali. Mi ritrovo sempre dei valori
interi.
Hai per caso qualche dritta da darmi in merito ?
Ho risolto importandoli come varchar senza riscontrare alcun problema se non
quello
dell'ordinamento durante l'estrazione dei valori.
Anticipatamente Grazie.
Marco

 E cosa ci fanno dei numeri, da gestire come numeri, in un campo varchar?
i dati (85.000 records) provengono da un file access con cui ho avuto


 pochi.
l'idea sarebbe buona ma si tratta di 85.000 records che possono crescere in
futuro.
non me la sento si creare un campo solo per l'ordinamento....
Grazie cma.
Marco

 mysql 4.0.12 e' qualcosa di portentoso
Si effettivamente hai ragione.
mi ritrovo a dover lavora con host diversi quindi non me la sento di
aggiornare il db
il locale e usare funzioni che poi potrebbero darmi problemi su alcuni
server.
Marco.

 quello dell'ordinamento durante l'estrazione dei valori.
Nulla di personale, ma memorizzare dei dati numerici come varchar è un
errore di progettazione che comporta problemi di spazio occupato su disco e
di gestione (tra cui l'ordinamento).
Se i dati sono numerici, devono essere di tipo numerico (INT, ecc.).
Quello che posso consigliarti è convertirli, ossia creare un campo di tipo
numerico e scandire tutta la tabella effettuando la conversione dei valori;
poi cancellare la colonna varchar.
Ciao
Marco

 poi cancellare la colonna varchar.
mi sa che sarebbe troppo complesso in quanto vorrei che la procedura
fosse + automatizzata possibile in quanto deve essere eseguita
quotidianamente.
Nel senso: access>mysql  ogni giorno.
Utilizzo mysqlfront con lo strumento import ODBC ma impostanto varie
configurazioni decimali
per i campi sia di partenza che di destinazione non ho risolto nulla, mi
ritrovo sempre degli interi.
Avrei risolto con DBTools manager se non fosse per il fatto che non mi
effettua
l'importazione delle query di access ma solo delle tabelle. Le query proprio
non le vede.
Grazie cmq.

 Nel senso: access>mysql  ogni giorno.
Stai scherzando, ovviamente.
Anche perchč non vedo nessun motivo razionale per usare access come primario
e trasferire tutto su MySQL.
Ciao
Marco

 e trasferire tutto su MySQL.
Senti, dal momento che non sai da dove proviene il db access, come
fai a fare una affermazione del genere ?
non ti sto dicendo che access viene usato sul web.
č solo la base dati da cui dobbiamo partire e importare in MySQL
a me serve una soluzione per l'importazione di numeri decimali in MySQL
Grazie cmq.
Marco.

 a me serve una soluzione per l'importazione di numeri decimali in MySQL
E io te l'ho detta.
Al massimo puoi provare con PHP e le ODBC. Magari riesci a fare la
conversione.
Ciao
Marco

 conversione.
Ok, grazie cmq.
Marco

 snip >
Puoi importare il tutto come varchar in una tabella temporanea per poi
con PhP convertire i dati e inserirli nel tuo database, poi droppare la
tabella temporanea.
E' un hack brutto e sporco, ma di meglio non mi viene :)
Ciao,
	Nicholas

 E' un hack brutto e sporco, ma di meglio non mi viene :)
ciao e grazie del consiglio.
vorrei evitare di fare passaggi ulteriori  in quanto è una procedura che
dobbiamo eseguire
giornalmente e ci porta via già parecchio tempo.
Forse sono riuscito a importare il campo decimale correttamente da Access a
Mysql
utilizzando DBTool Manager Pro. Se con altr prove ne ho la conferma posterò
i vari passaggi, forse potranno essere d'aiuto a qualcuno.
Grazie cmq,
Marco