convert the money data type in a decimal format 2.

What is the best way to convert the money data type in a decimal 2 format in ms sql 2005 for use in my applications.

This?

CAST (tr.depositReceivedAmount AS decimal (10, 2))

I respectfully disagree with the idea that you must change the query column a type of 'money' data to something else.

In most database servers, "«argent» Silver" is a data type that is designed to provide a very homogeneous behaviour with regard to the arithmetic accuracy.  In Microsoft Access, the representation is a the whole scale.  MS SQL Server, it is obviously similar.  Ditto Oracle and others.

You like that the money data type in the database for this clarification, because "hell has no fury like an accountant looking for a bad penny."   The column of database storage formats are designed to satisfy the accountants, and it's a good thing.

Meanwhile, you also want to take care as to exactly how you are dealing with values.  There are several points where the district could take place.  You don't have available the strongest possible manipulation of the floating of the data types in ColdFusion.  You also are somewhat at the mercy of any interface software can be between you and that SQL server, you can use.  "It is correct to all about values , but not several times."

I suggest to round the value just before the display and user input must be two decimals.

Then, you may need to do some things at the end of SQL server.  For example, when you update a value in the table, you may need to use logical server to explicitly truncate the value to two decimal places, as well as an update of "$ 34,56" explicitly updates the column "$34,5600.."  (This kind of thing should happen in the context of SQL Server).  You know that the user entry has exactly two significant digits, but maybe (maybe not...)! SQL server may not know this.  You want to ensure that the stored server internally represents exactly two digits, when the origin of a user input value.

Do not err on the side of "convenience" or "which seems." good on the screen  (If you do, get ready get telephone communications of the accountants, always at inappropriate times of the night.)

Tags: ColdFusion

Similar Questions

  • I want to convert the double data type to string type

    I want to convert the double data type to string, have idea about that

    Hello

    Use f

    FN: String (ARG) returns the string value of the argument. The argument can be a number, boolean, or node-set element

    Example: string (314)
    Result: "314".

    http://w3schools.com/XPath/xpath_functions.asp#string

    See you soon,.
    Vlad

  • convert the varchar2 data type to the data number type

    How to convert the varchar2 data type to the data type number.


    It looks like my data

    create table one)
    col1 varchar2 (50)
    col2 varchar2 (500);

    Insert in a (col1, col2) values ('1234 ', ' 2345');

    Select Column1 of number (19)) cast (to_number (col1);

    IAM getting error invalid number


    I need to create a table with the same columns with data like number types (19)

    can someone help me

    Thank you

    You have changed your original post, so now I see that you get the invalid number.

    This is why you should always avoid the varchar columns to store numbers or dates...

    Since your table source contains a nonnumeric value, you can write a pl/sql to convert data and see what records are false:

    SQL> insert into a (col1,col2) values ('xxxx','2345');
    
    1 row created.
    
    SQL> select * from a;
    
    COL1     COL2
    -------- --------
    1234     2345
    xxxx     2345
    
    2 rows selected.
    
    SQL> create table b (col1 number(19), col2 number(19));
    
    Table created.
    
    SQL> set serverout on
    
    SQL> declare
      2  cursor c is
      3  select * from a;
      4  begin
      5    for r in c loop
      6     begin
      7       insert into b values (to_number(r.col1), to_number(r.col2));
      8     exception
      9       when invalid_number then
     10        dbms_output.put_line('Row rejected: col1='||r.col1||' col2='||r.col2);
     11     end;
     12    end loop;
     13  end;
     14  /
    Row rejected: col1=xxxx col2=2345
    
    PL/SQL procedure successfully completed.
    
    SQL> select * from b;
    
          COL1       COL2
    ---------- ----------
          1234       2345
    
    1 row selected.
    

    Max

    Published by: Massimo Ruocchio, June 14, 2011 20:00
    Added the first query in the example

  • The Money data type

    I'm having a very difficult time to do a simple insert and update for columns with NUMBER data types (38.2) and NUMBER (10,0) on Oracle.

    These columns represent / gifts of money and they used to be defined as a MONEY data type and the data type TINYINT, respectively (when it was on non - Oracle DB)

    I used ColdFusion cf_sql_numeric, cf_sql_decimal and cf_sql_money, but all gave me error such as:

    The following information is for the creation of Web sites for debugging purposes.
    Error occurred while processing request

    Invalid data for CFSQLTYPE CF_SQL_NUMERIC 7,261.00.

    OR

    The following information is for the creation of Web sites for debugging purposes.
    Error occurred while processing request

    Invalid data for CFSQLTYPE CF_SQL_Double 7,261.00.

    When I run the following:

    < CFSET cash = ' #Replace(Form.Cash, "$", "", "ALL") # '>

    < CFSET CFM = ' #Replace(Form.CFM, "$", "", "ALL") # '>

    UPDATE Tbl_Gift

    FiscalYear = SET attributes

    < cfqueryparam cfsqltype ="cf_sql_varchar" Value =' #Form.FYR # '>,  

    CashAmount =

    < cfqueryparam cfsqltype ='cf_sql_numeric' value =' #Cash # '>,

    DonationAmount = 

    < cfqueryparam cfsqltype ='cf_sql_numeric' value =' #CFM # '>

    etc.

    I ran out of data type to use. What else can be used for the Oracle NUMBER data type (38.2) and NUMBER (10,0)? Help, please

    It is a comma in the number that is the cause of the problem in the

    CFQUERYPARAM.  REM before commas you save in the database and you

    should be good.

  • Largest number of digits for the NUMBER data type?

    What length more of a NUMBER that Oracle will "support"?

    The documentation says the following:

    Limitations of the data type says:

    «Can be represented in a comprehensive precision 38 digits»

    NUMBER of Data Types says:

    "Oracle guarantees portability of numbers with precision of up to 20 digits of base-100, which equals 39 or 40 decimal digits according to the position of the decimal point."

    I realize account that if I define a column as simply NUMBER, I can insert numbers with a size up to 126 characters.  However, Oracle seems to maintain only the first 40 digits in MOST cases.  The largest number of digits, it seems to allow is 40 before it begins to be replaced by 0.

    With numbers that have more than 40 figures, Oracle will sometimes replace all numbers according to the 38th numbers with a 0 and sometimes replace 0 after the digit 39th or 40th.

    Therefore, what is the largest number of digits, can be trusted to safely store Oracle?

    This is the code I used for this testing process.

    create the table max_num (num number);

    declare

    number of l_x;

    Start

    for x in 1.200

    loop

    l_x: = x;

    insert into max_num values (rpad (1, x, 1));

    end loop;

    exception

    while others then

    dbms_output.put_line ('STOP: ' | l_x);

    dbms_output.put_line (SQLERRM);

    end;

    /

    Select num, length (replace (num, 0)) of max_num;

    What length more of a NUMBER that Oracle will "support"?

    You have already given your own answer. If 'length': the maximum number of digits is written the doc gives you the answer:

    999... (38 9's) x 10 value maximum125

    The 38/39/40, hereinafter referred to as the doc means "significant digits". This is why rounding or truncation occurs if you provide more significant digits of 38/39/40.

    Oracle stores the numbers internally in a binary format 21 bytes using a documented structure in the doc of the OIC in the section 'NUMBER'.

    http://docs.Oracle.com/CD/E11882_01/AppDev.112/e10646/oci03typ.htm#i423684

    Oracle database stores the values of the NUMBER data type in a variable length format. The first byte is the exponent and is followed by 1 to 20 mantissa bytes. The high bit of the exponent byte is the sign bit; It is defined for positive numbers, and it is cleared for negative numbers. The lower 7 bits represent the exponent, which is a number of base-100 with an offset of 65.

    This article from doc continues to show you how to convert the internal format to the real value.

    An additional byte of 1 is used for all types of data to store the length; That's why you often see docs saying numbers can take 22 bytes.

  • DLL for LabWindows/CVI 8.0 with the bool data type

    Hello

    I want to use a new SWIR camera in LabWindows/CVI 8.0 (Windows XP 32bits).

    The company delivered with the camera produced a 32-bit dll by using Microsoft Visual C++ 2010. The .dll and .lib and .h files include a working SDK/API (some functions with the bool data type)

    Compilation-online syntax error, variable Boolean is not a data type in LabWindows/CVI 8.0

    Generate the import of DLL-online syntax error library

    I tried to convert bool char (typedef unsigned char bool => no more syntax error but the functions does not work.)

    What can I do?

    Martin

    Hello again, Naumann!

    Microsoft Visual C++ 2010 represents Boolean using 1 byte, as stated by MSDN: https://msdn.microsoft.com/en-us/library/tf4dy80a(v=vs.100).aspx

    I guess that you import C++ functions using the syntax for extern "C". Otherwise, because of the C++ name mangling wouldn't you able to bind C++ library against your code CVI.

    You can also specify how you import C++ functions?

    In addition, because you have not described the problem as a corruption of heads or runtime error, I guess the C++ library function is called correctly the CVI. That said, I tend to believe that the problem is not really in the mechanism of interaction of C/C++, but in the C++ library. If you would start calling a dummy C++ function returning an integer from a simple CVI application that should work, because redefine bool in CVI 1 byte must ensure that settings are correctly transferred onto the stack.

    If you need to create a wrapper function of C++ that is not using bool and calls the C++ function, I expect to return the same result.

    Maybe you are missing a few prior initialization steps required? The provider of the camera also comes all example code?

    Best regards!

    -Johannes

  • For the complex data type, how to generate the Dll with compatible interface to C/C++

    Hello

    I used the Labview FPGA module to develop test equipment. Now, I need to write a driver that is to be a Dll with compatible interface to C/C++ for this equipment. So that my client who is familiar with C/C++ can call the driver without any study on labview. But I had a few problem on how to convert labview for C/C++ data complex data type. To clearly explain to my question, I have attached a simple example. (see attachment) I try to generate a Dll for the attached example VI and get the the function prototype at the head of the files as below:

    ' void OpenFpgaReference (LStrHandle * RIODevice, TD1 * errorIn, LVRefNum * FPGAVIReferenceOut, TD1 * errorOut).

    As you have known, the type of data "LStrHandle * RIODevice" and "LVRefNum * FPGAVIReferenceOut" Labview data format are. C/C++ do not have this kind of data type and can not reconige it. As a result, I can't call the Dll of C/C++ programming language. How to convert these two data type of labview for the C/C++ compatible data format, and then build the Dll? Anyone know about this?

    The answer is really apprecaited! Thank you in advanced.

    Ivan.Chen wrote:

    As I found in the following article:

    http://digital.NI.com/public.nsf/WebSearch/FB001AA027C8998386256AAD006C142D?OpenDocument

    LVRefNum is the name of resource of LabVIEW VISA or refnum, and "it is impossible to convert LabVIEW VISA name of resource or refnum VISession valid ID."
    This means that external code modules can not access & control the session VISA which is open by labview. But for my purposes, I will not attempt to access this VISA extenal code(C/C++) session. I just hope that save this session VISA in the external code once I opened it in Labview dll; and pass it to the labview dll when needed. While I have not need to login again when I need to control the device. Is it possible to do?

    A LVRefNum is really just a single int32 value. Its meaning is useless for other environments than those who created it so that you Michael not any what in C/C++ caller but pass it back to other functions in your DLL, but this often isn't a problem at all.

    You can take the following statement of the LabVIEW extcode.h headers and add them to your delabviewed header files to make it work in such a way.

    #define Private (T) typedef struct T # _t {void * p ;} * T}

    Private (LVRefNum);

    The LStrHandle you must set a standard C string instead in your export DLL and document what is the size of the string buffer should have if it is an output parameter.

    TD1 error clusters should also be divided into their parameters (C compatible) separate for all items or just to the left of suite entirely.

    Rolf Kalbermatter

  • Convert a varchar2 data type Date

    Hi guys,.

    Can someone help me convert a Varchar2 data type in the data type Date?

    I have a query and my column is a varchar2 data type.
    I want to just that convert the Varchar2 in a DATE, because I met
    problem in my query. I want to do the day1 day10 transaction.

    Ex:
    Day 1 = January 1, 2010
    Day10 = January 10, 2010

    table.record_date varchar2 (12)

    SELECT column1, Column2
    table
    where record_date between? and?

    How can I set the record_date between day1 and day10 since record_date is of type varchar?

    Thank you.

    Laetitia

    Lala,

    If the data in the database are in the format MM-DD-RR , then you must use the same format when you convert back to this day.

    So change the query to

    SELECT COLUMN1, COLUMN2 FROM TABLE WHERE TO_DATE(RECORD_DATE, 'MM-DD-RR') BETWEEN TO_DATE('01-JAN-2010') AND TO_DATE('10-JAN-2010')
    

    Kind regards

    Manu.

  • Using DBMS_DATAPUMP with the LONG data type

    I have a procedure below that calls the DBMS_DATAPUMP procedure using a REMOTE_LINK move a schema of one database to another. However, some tables in this schema have columns with the data type of LONG. And when I run it I get an error saying that you cannot move the data with the LONG data type using a REMOTE CONNECTION. So no data in these specific tables gets flying over.

    Does anyone else have this problem? If so, do you have a work around? I tried to add a CLOB column in my table and affecting the new CLOB equal THROUGHOUT, but I couldn't get that to not work either... even when I tried to use a TO_LOB. If I could get that pass, then I could just slide ALONG, the schema, and then re-create the LONG column on the opposite side.

    Here is my procedure...



    DECLARE
    / * IMPORT/EXPORT VARIABLES * /.
    v_dp_job_handle NUMBER;          -The handful of job data pump
    v_count NUMBER;          -Index of the loop
    v_percent_done NUMBER;          -Percentage of job complete
    v_job_state VARCHAR2 (30);     -To keep track of job status
    v_message KU$ _LOGENTRY;     -For error messages and work in PROGRESS
    v_job_status KU$ _JOBSTATUS;     -The State of the work of get_status
    v_status KU$ _STATUS;     -The status returned by get_status object
    v_logfile NUMBER;
    T_DATE VARCHAR2 (13).
    v_source_server_name VARCHAR2 (50);
    v_destination_server_name VARCHAR2 (50);

    BEGIN
    v_project: = 'TEST ';
    T_DATE: = TO_CHAR (SYSDATE, 'MMDDYYYY_HHMI');
    v_source_server_name: = 'TEST_DB ';

    v_dp_job_handle: = DBMS_DATAPUMP. OPEN)
    OPERATION = > "IMPORT."
    JOB_MODE = > "SCHEMA."
    REMOTE_LINK = > v_source_server_name,
    JOB_NAME = > v_project | ' _EXP_' | T_DATE,
    VERSION = > 'LAST');

    v_logfile: = DBMS_DATAPUMP. KU$ _FILE_TYPE_LOG_FILE;

    DBMS_DATAPUMP. ADD_FILE)
    MANAGE = > v_dp_job_handle,
    FILENAME = > v_project | ' _EXP_' | T_DATE |'. JOURNAL '.
    DIRECTORY = > 'DATAPUMP. "
    FILETYPE = > v_logfile);

    DBMS_DATAPUMP. () METADATA_FILTER
    MANAGE = > v_dp_job_handle,
    NAME = > 'SCHEMA_EXPR ',.
    VALUE = > ' = "' | v_project | " ' ') ;

    DBMS_DATAPUMP. START_JOB (v_dp_job_handle);

    v_percent_done: = 0;
    v_job_state: = "UNDEFINED";

    WHILE (v_job_state! = "COMPLETED") AND (v_job_state! = "STOPPED")
    LOOP
    DBMS_DATAPUMP. GET_STATUS)
    v_dp_job_handle,
    DBMS_DATAPUMP. KU$ _STATUS_JOB_ERROR + DBMS_DATAPUMP. KU$ _STATUS_JOB_STATUS + DBMS_DATAPUMP. KU$ _STATUS_WIP.
    -1,
    v_job_state,
    v_status);

    v_job_status: = v_status. JOB_STATUS;

    IF v_job_status. PERCENT_DONE! = v_percent_done THEN
    DBMS_OUTPUT. Put_line ('* percent of the job done = ' |) To_char (v_job_status. PERCENT_DONE));
    v_percent_done: = v_job_status. PERCENT_DONE;
    END IF;

    IF BITAND (v_status. MASK, DBMS_DATAPUMP. KU$ _STATUS_WIP)! = 0 THEN
    v_message: = v_status. WORK IN PROGRESS;
    ELSIF BITAND (v_status.mask, DBMS_DATAPUMP. KU$ _STATUS_JOB_ERROR)! = 0 THEN
    v_message: = v_status. ERROR;
    ON THE OTHER
    v_message: = NULL;
    END IF;

    IF v_message IS NOT NULL THEN
    v_count: = v_message. FIRST;
    While v_count IS NOT NULL
    LOOP
    DBMS_OUTPUT. Put_line (v_message (v_count). LOGTEXT);
    v_count: = v_message. Next (v_count);
    END LOOP;
    END IF;
    END LOOP;

    DBMS_OUTPUT. Put_line ("' job has completed");
    DBMS_OUTPUT. Put_line (' State of the Final work = ' | v_job_state);

    DBMS_DATAPUMP. Detach (v_dp_job_handle);
    END;

    TO_LOB can be used to insert, create table in select and update the instructions to convert

    So: You simply cannot use it in SELECT..., you can use CREATE TABLE BLAH AS SELECT TO_LOB (LONG_COLUMN) OF DREADED_TABLE_WITH_LONG_COL;

  • As an operator with the long data type

    Oracle 10g.

    Hi gurus

    I want to apply as an operator on the long data type, but I get the error message, can you please help me why is that I use as an operator with the long data type. I did some research and but unable to find a solution, see query for more details below...

    Query

    SELECT trigger_body FROM user_triggers

    WHERE trigger_body LIKE '% UPDA % CASE % ';

    Error

    ORA-00932: inconsistent data types: expected NUMBER got LONG

    00932 00000 - ' incompatible data types: wait %s %s got. "

    * Cause:

    * Action:

    Error on line: column 2: 7

    Concerning

    Muzz

    Adrian Billington wrote to the top of your options.

    working with long columns

  • Syntex to create the table with the long data type

    I'm looking to create a table based on another table that having the column long data type. Throw the error ORA-00997: illegal use of the LONG data type


    I tired it

    create table abc_long (ag bgd long number);

    create table abc_long_dummy as ( ) Select *of abc_long); - ORA-00997 error: illegal use of the LONG data type

    How to get there?

    I'm looking to create a table based on another table that having the column long data type.

    You really don't want to do that.

    LONG data type has been deprecated for some time now, use CLOB.

    The TO_LOB() function will do the conversion on the fly:

    create table abc_long_dummy
    as
    select ag
         , to_lob(bgd) as bgd
    from abc_long ;
    
  • Error (21,100): PL/SQL: ORA-00997: illegal use of the LONG data type

    CREATE or REPLACE (name in varchar2) procedure Compress_tab_partition
    is
    last_mnth_var varchar2 (8);
    curr_mnth_var varchar2 (8);
    number of last_mnth;
    number of curr_mnth;
    last_partition varchar2 (8);
    high_val varchar2 (4000);
    Start

    Select to_char (add_months (trunc (sysdate, 'MM'),-1), 'YYYYMM') | ' 00' in the double last_mnth_var;
    Select to_char (sysdate, 'YYYY') | TO_CHAR (sysdate, 'mm') | ' 00' in the double curr_mnth_var;
    Select to_number (last_mnth_var) in the double last_mnth;
    Select to_number (curr_mnth_var) in the double curr_mnth;

    Dbms_output.put_line ('Compression of GOLDMGR Table scores.' | table-name |) "to go". ») ;
    Dbms_output.put_line(' ');

    / * Step 1 - identify the name of the partition of the specified table must be compressed * /.
    Select high_value from high_val from user_tab_partitions where table_name = table-name;
    Select nom_partition into last_partition from user_tab_partitions where table_name = table-name and high_value = rtrim (high_val);

    / * Step 2 - Alter partition table to compress * /.

    run immediately "ALTER TABLE GOLDMGR." | table_name | ' CHANGE THE PARTITION '. last_partition | "COMPRESS by low query";

    / * Step 3 - Index rebuild step * /.

    I'm in (select index_name in user_indexes where table_name = table-name)
    loop
    run immediately "ALTER INDEX GOLDMGR." | i.index_name |' REBUILD ";
    end loop;

    Dbms_output.put_line (' COMPLETED: compress the Table partitions change.) ") ;

    end;
    /

    I'm getting an error like: Error (21,100): PL/SQL: ORA-00997: illegal use of the LONG data type

    Please resolve.

    HIGH_VALUE datatype is LONG. You may not use for a long TIME in WHERE clause expressions. You need to loop through the partitions by selecting HIGH_VALUE and then comparing. Secondly, there is no need to select double to calculate expressions. For example:

    Select to_char (add_months (trunc (sysdate, 'MM'),-1), 'YYYYMM') | ' 00' in the double last_mnth_var;

    should be replaced by

    last_mnth_var: = to_char (add_months (trunc (sysdate, 'MM'),-1), 'YYYYMM') | ' 00'.

    and there is no need to add_months here:

    last_mnth_var: = to_char (trunc (sysdate, 'MM') - 1, "YYYYMM"). ' 00'.

    But the main question is simply ALTER TABLE MODIFY PARTITION COMPRESS allows compression but does not compress. You must issue ALTER TABLE MOVE PARTITION COMPRESS:

    SQL > create table tbl (n) partition by range (n)
    2 (partition p1 values less than (maxvalue))
    3. Select lpad('X',4000,'X') from dual connect by level<=>
    4.

    Table created.

    SQL > select bytes
    2 from WHERE user_segments
    3 where nom_segment = 'TBL '.
    4 and nom_partition = 'P1 '.
    5.

    BYTES
    ----------
    830472192

    SQL > alter table tbl
    2. change the partition p1 compress
    3.

    Modified table.

    SQL > select bytes
    2 from WHERE user_segments
    3 where nom_segment = 'TBL '.
    4 and nom_partition = 'P1 '.
    5.

    BYTES
    ----------
    830472192

    SQL > alter table tbl
    2. move the partition p1 compress
    3.

    Modified table.

    SQL > select bytes
    2 from WHERE user_segments
    3 where nom_segment = 'TBL '.
    4 and nom_partition = 'P1 '.
    5.

    BYTES
    ----------
    8388608

    SQL >

    SY.

  • ORA-00997: illegal use of the LONG data type

    Hi all

    11.2.0.1

    ALTER TABLE SAFDB MOVE TABLESPACE DATA_TS_ENC

    *

    ERROR on line 1:

    ORA-00997: illegal use of the LONG data type

    Why illegal? How can I move this table?

    Thank you very much

    pK

    Take a look who

    http://aprakash.WordPress.com/2011/01/06/how-to-move-table-containing-long-or-LOB-columns/

    Concerning

  • Insert/update the column with the clob data type

    Hi all

    ORCL Version: 11g.

    I have a table with the clob data type.

    Test12

    (col1 clob);

    I'm trying to insert/update to update the column with more than 4000 characters.

    But due to the limitation of tank 4000, I could not Insert/Update.

    Need your help in resolving this issue.

    THX

    Rod.

    The limit of 4000 characters is incorrect.  That pertains only to the varchar2 data type.  A clob can hold more than 4 G.

    Here is an example that shows how to insert it, I found...

    Otherwise, here is a way 'dirty' to do.

    insert into your_table (COLA, COLB)

    values

    (PRIMARY_KEY, PART 1 OF DATA)

    ;

    Update your_table

    Define COLB = COLB | PART 2 OF BIG DATA

    where COLA = PRIMARY_KEY;

    Update your_table

    Define COLB = COLB | PART 3 OF BIG DATA

    where COLA = PRIMARY_KEY;

    .. and so on...

    I don't know that I personally recommend the second style...  But he could do the job.

  • Where we can find the attachment data type short text

    Hello

    file type attachments are store at fnd_lob.

    Where we can find the attachment data type short text in oracle apps.

    Concerning

    Hello

    Thanks, that's useful.

Maybe you are looking for