Hi Richard,

> i want to round() the value of a column, but the number of digits is
> depending on the value of another column. i found out, that this doesn't work:
>
> create table testme
>     ->  (number double (5,4),digits tinyint(3));
> Query OK, 0 rows affected (0.08 sec)
>
> mysql> explain testme;
> +--------+-------------+------+-----+---------+-------+
> | Field  | Type        | Null | Key | Default | Extra |
> +--------+-------------+------+-----+---------+-------+
> | number | double(6,4) | YES  |     | NULL    |       |
> | digits | tinyint(3)  | YES  |     | NULL    |       |
> +--------+-------------+------+-----+---------+-------+
> 2 rows in set (0.08 sec)
>
> mysql> insert into testme values (100.4235,3),(85.4,1);
> Query OK, 2 rows affected (0.08 sec)
> Records: 2  Duplicates: 0  Warnings: 0
>
> mysql> select * from testme;
> +----------+--------+
> | number   | digits |
> +----------+--------+
> | 100.4235 |      3 |
> |  85.4000 |      1 |
> +----------+--------+
> 2 rows in set (0.08 sec)
>
> mysql> select round(number,digits) from testme;
> +----------------------+
> | round(number,digits) |
> +----------------------+
> |             100.4240 |
> |              85.4000 |
> +----------------------+
> 2 rows in set (0.08 sec)
>
>
> is there any way i could do this with *one* query?
> the only solution i see is to read the digits-column with a script and then
> create a new query, but thats not possible in my case...


It does the same for me (that's not much help, but it's obviously not 'you'!)

I first went looking to see if there is a MySQL parameter which says how many decimal 
digits will be displayed,
by default - but failed to find it and may be confusing myself with another product. 
Certainly nothing in
my.cnf.

I then wondered if the reason the result is expressed this way is because of the 
schema which defines:

number double (5,4)

Sure enough, changing number to double (5,3) and then re-running your tests, makes it 
change. Again no help to
you.

I notice that all of the examples in the manual for round(), truncate(), and format() 
render the D argument as a
constant. So I'm wondering if the "digits" is being ignored?

Sorry not to have more to offer. Is there a wiser mind that can shed some light?
=dn



---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to