Preceeding Zeros in Number datatype
Hello all
Is there any way to store values with preceeding zeros in Oracle Number datatype (eg : person code: 00089034)
Thanks in advance
Yes it is possible, by storing it as a varchar2. However I would advice you to store the number as a number, and use a format mask for display:
SQL> select to_char(89034,'00000009') from dual;
TO_CHAR(8
00089034
1 rij is geselecteerd.Regards,
Rob.
Similar Messages
-
Preceeding zeros disapprearing in the excel download.
I have programmed ALV report using function module REUSE_ALV_GRID_DISPLAY.
I have declared my final output internal table's batch field as CHARG_D which is of 10 characters.
I have passed field_catelog-no_zero = 'X'. for batch field.
However when I download into excel sheet, preceeding zeros of batch disappearing in excel sheet.
Is there any way to retain the preceeding zeros for batch values and other similar fields values in the excel sheet after download ?
THANKS IN ADVANCE.There's a few variations on how to get the data from ALV into Excel and I don't have a system right now, so I can only give a general comment. If the direct export to Excel (OLE) doesn't work, I'd recommend to export the data as local file using format Spreadsheet and give it an extension like ".csv".
When saving the file this way, it really is just a tab separated file (text file, you can view it via Notepad and check for the leading zeros), which you can open in Excel. However, you have to be careful, because when you double-click on the file, Excel will usually open the file directly and format your batch (CHARG_D) field with type General. As a result anything that looks like a number, will be stripped off the leading zeros. Therefore instead you should open the data via the import wizard (e.g. in Excel 2007 it's on the Data ribbon under Get external data and then choosing From text) and reformat the field CHARG_D from General to Text. This will ensure that you'll keep the leading zeros.
There's lots of other ways to do it and my version is probably not the most efficient. However, it works in general, as long as you see the leading zeros in the ALV and is easy to remember (at least for me)...
Good luck, harald -
How to remove preceeding zeros?
Hi,
Any function to remove the preceeding zeros from a number type.
I cannot be using integers because i need to append it to a string.
Thanks and regards,
RonitaHi Ranita,
U can use anyone of the following options.
DATA:num(10) value '0000000100'.
SHIFT num LEFT DELETING LEADING '0'.
WRITE:/ num.
Or
DATA : num(10) TYPE n VALUE '0000000100'.
DATA : l_num type n.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = num
IMPORTING
output = l_num.
write: l_num.
If it is helpfull pls reward pts.
Regards
Srimanta -
How to convert number datatype to raw datatype for use in data warehouse?
I am picking up the work of another grad student who assembled the initial data for a data warehouse, mapped out a dimensional dw and then created then initial fact and dimension tables. I am using oracle enterprise 11gR2. The student was new to oracle and used datatypes of NUMBER (without a length - defaulting to number(38) for dimension keys. The dw has 1 fact table and about 20 dimension tables at this point.
Before refining the dw further, I have to translate all these dimension tables and convert all columns of Number and Number(n) (where n=1-38) to raw datatype with a length. The goal is to compact the size of the dw database significantly. With only a few exceptions every number column is a dimension key or attribute.
The entire dw db is now sitting in a datapump dmp file. this has to be imported to the db instance and then somehow converted so all occurrences of a number datatype into raw datatypes. BTW, there are other datatypes present such as varchar2 and date.
I discovered that datapump cannot convert number to raw in an import or export, so the instance tables once loaded using impdp will be the starting point.
I found there is a utl_raw package delivered with oracle to facilitate using the raw datatype. This has a numbertoraw function. Never used it and am unsure how to incorporate this in the table conversions. I also hope to use OWB capabilities at some point but I have never used it and only know that it has a lot of analytical capabilities. As a preliminary step I have done partial imports and determined the max length of every number column so I can alter the present schema number columns tp be an apporpriate max length for each column in each table.
Right now I am not sure what the next step is. Any suggestions for the data conversion steps would be appreciated.Hi there,
The post about "Convert Numbers" might help in your case. You might also interested in "Anydata cast" or transformations.
Thanks, -
Using number datatype for date column
Hi
Is there a side effect for using "number" datatype for "date" column?
If so, what is the disadvantage?
Many thanksHi,
Ora_83 wrote:
Hi
Is there a side effect for using "number" datatype for "date" column?
If so, what is the disadvantage?Yes, there's a definite disadvantage.
Oracle provides date arithmetic and a number of functions for manipulating DATEs. None of them work with numbers.
For example,
SELECT TRUNC (order_date, 'MONTH') AS order_month
, AVG (ship_date - order_date) AS avg_delay
FROM orders
GROUP BY TRUNC (order_date, 'MONTH')
;order_month involves a DATE function; it's pretty easy to find the month that conatins order_date.
avg_delay involves date arithmetic. It's extrememly easy to find how much the time passed between order_date and ship_date.
Depending on how you code dates as numbers, doing either one of the above may be just as easy, but doing the other will be very difficult. You'll waste a lot of effort converting the NUMBERs to real DATEs whenever you need to manipulate them.
Validation can be very difficult for NUMBERs, also.
Watch this forum. It's a rare day when there's not some question about how to get around a problem caused by storing dates in a NUMBER (or VARCHAR2) column. Don't add to that. Always use DATE columns for dates. -
Wht is ALV setting/flag to deletes the preceeding zeros in doc #s,?
Hi Experts,
am displaying doc #s in my_alv, so the zeros r coming as prefix........i wanna to truncate zeros......so, can use FM conversion exit..........but, pls. let me know that,
Is there any ALV functionality in SAP, which deletes the preceeding zeros in Sales doc, delivery doc #s?
(Wht is ALV setting/flag to deletes the preceeding zeros in doc #s,?)
thanq
Edited by: Srinivas on Feb 8, 2008 4:40 PMWhile defining field catalougue , define it as
fieldcat_ln-no_zero = 'X'.
preceeding zeros of documents nos will not be displayed in ALV list.
anya -
License Master - Leading Zeros with Number
SAP Master,
I have trouble in Licence Master, which is the Following Fields
are <b>Prefix Leading Zero with Number</b>
1.Sold-to-Party
2.Ship-to-Party
3.Material
How to display Fields without Prefix Zero?
<b>T_Code = J1ILIC02</b>in that case , u have to change Field-Domain properties.
Regards
Prabhu -
Understanding number datatype [A help for beginners]
I would like to share some practical aspects of Oracle Number datatype. Please visit following link.
http://mamohiuddin.blogspot.com/2007/03/practical-approach-to-understand-oracle.html
Thank you,
aijazMy only comment would be, since this posting of yours is being made in March 2007, wouldn't it make sense to ensure that it's all correct for the latest version of Oracle (10.2) as 9iR2 is a little "old hat" now. I'm not saying that there is anything wrong with what you've demonstrated, but you only quote it as being compatible with 9iR2 and 10.2 has now been available for a good couple of years.
-
Problem with number datatype dimension in BIB
Hi,
I've got a problem. When I create dimension with number datatype and I assign it to my cube, I cannot use my cube with my BIB presentation object - such as Crosstab. Is this possible only with varchar dimensions?It should work, but it would be helpful if you could specify more information, for example which errormessage you are seeing and where.
-
Problem while modifying number datatype.
Hi All,
I have modified a column, which is of number datatype.
Initially it was number(8,2), now I have changed this to Number(10,2).
But, due to some change in requirement, I have to revese the changes. Now, I am trying to make it Number(8,2), but it is giving me the following error.
Error report:
SQL Error: ORA-01440: column to be modified must be empty to decrease precision or scale
01440. 00000 - "column to be modified must be empty to decrease precision or scale"
Is there a way to make it?
Please suggest..
I am using Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64bit Production.
Thnx in advance..
Bits..You'd have to jump through some hoops to decrease the allowable number of digits in a column. You'd either have to re-create the table, i.e.
-- Save off the data in FOO
ALTER TABLE foo
RENAME TO foo_bkup;
CREATE TABLE foo (
-- New column definitions
INSERT /*+ APPEND */ INTO foo( list_of_columns )
SELECT list_of_columns
FROM foo_bkupOr you could create a new column, copy the data, and rename the old column
ALTER TABLE foo
ADD( temp_col_name number(8,2) );
UPDATE foo
SET temp_col_name = old_col_name;
ALTER TABLE foo
DROP COLUMN old_col_name;
ALTER TABLE foo
RENAME COLUMN temp_col_name TO old_col_name;Justin -
Hi all,
Recently i came across one of the most wierd situation across my whole Oracle experience of almost 3 Yrs. I created a table TESTAB (using Oracle 9i) as
NUMBER_F NUMBER
NUMBER_PS NUMBER(5,2)
VARCHAR_F VARCHAR2(10)
CHAR_F CHAR(10)
Then i inserted a row as
Insert into testab values ('0123.23', '099.34','Asim','Ahmed');
and it accepted the data for Number datatype in single qoutes and automatically parse it for Number datatype.!!!
SQL> select * from testab;
NUMBER_F NUMBER_PS VARCHAR_F CHAR_F
1 3.34
23 34.34
2.23 2.33 asim ahmed
123.23 99.34 Asim Ahmed
Can somebody explain is that the correct behaviour ! If it is, then i must say it is really shocking behavious for such a mature database like Oracle !
Asim Ahmed.This feature is called 'implicit conversion'
http://download-west.oracle.com/docs/cd/B10501_01/appdev.920/a96624/03_types.htm#3435 -
Hi
Assume I have 5 digits 2 numbers (as below). I notice that they do not occupy the same space.(First one consumes more storage.)
What is the reason for this?
99999
10000
Edited by: Pascal Nouma on Aug 15, 2009 6:42 PMJustin Cave wrote:
Oracle, like all programs, stores numbers in binary. It takes more binary bits to store larger numbers than smaller numbers even if they have the same number of decimal digits.Actually, NUMBER datatype is not stored in binary - [Understanding Oracle NUMBER Datatype|https://metalink2.oracle.com/metalink/plsql/f?p=130:14:7587170171678335381::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,1007641.6,1,1,1,helvetica]. And yes, 99999 and 10000 do not occupy same number of bytes:
SQL> select dump(99999) from dual;
DUMP(99999)
Typ=2 Len=4: 195,10,100,100
SQL> select dump(10000) from dual;
DUMP(10000)
Typ=2 Len=2: 195,2Reason is 10000 is exact value of POWER(100,2). As soon as we, for example, add or subtract 1 space occupied will increase:
SQL> select dump(10001) from dual;
DUMP(10001)
Typ=2 Len=4: 195,2,1,2
SQL> select dump(9999) from dual;
DUMP(9999)
Typ=2 Len=3: 194,100,100
SQL> As you can see, number with more decimal digits can occupy less space.
SY. -
Number datatype in designer import
Having Designer model number datatype columns or domains that do not have Col Decimal Places defined. Only maximum length is populated. Data Modeler designer import do not populate values to Precision nor Scale. Precision should be set.
Identifed as a code bug. According to former metalink. Tobe fixed in a future version.
-
How to update precision value in number datatype
hello all
i hava a database containing data in that there is a table which contan a number datatype
that is number(10)
the table contain large amount of data
now i need the precision value 2
that is number(10,2)
how i can update is
i try alter command the do this bu the error is there the table contain data
so please suggest the solution
thanks in advanceThe number of columsn has nothing to do with it. The number of rows has nothing to do with it.
Here is a step-by-step example to address your problem. I will change DATA_OBJECT_ID from NUMBER to NUMBER(10,2) even though there are thousands of rows in the table, the column is "in the middle " of the table, and there are many rows with non-null values in that column.
07:02:43 > create table t3 as select * from all_objects;
Table created.
Elapsed: 00:00:06.22
07:04:08 > desc t3
Name Null? Type
OWNER NOT NULL VARCHAR2(30)
OBJECT_NAME NOT NULL VARCHAR2(30)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NOT NULL NUMBER
DATA_OBJECT_ID NUMBER
OBJECT_TYPE VARCHAR2(19)
CREATED NOT NULL DATE
LAST_DDL_TIME NOT NULL DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NOT NULL NUMBER
EDITION_NAME VARCHAR2(30)
07:04:12 > alter table t3 modify (data_object_id number(10));
alter table t3 modify (data_object_id number(10))
ERROR at line 1:
ORA-01440: column to be modified must be empty to decrease precision or scale
Elapsed: 00:00:00.98
07:08:05 > select count(*), min(data_object_id), max(data_object_id), count(distinct data_object_id), count(data_object_id)
07:09:06 2 from t3;
COUNT(*) MIN(DATA_OBJECT_ID) MAX(DATA_OBJECT_ID) COUNT(DISTINCTDATA_OBJECT_ID) COUNT(DATA_OBJECT_ID)
184456 0 1526320 12225 70092
1 row selected.
Elapsed: 00:00:00.11
07:09:41 > alter table t3 add (temp_data_object_id number(10,2));
Table altered.
Elapsed: 00:00:00.07
07:10:27 > update t3 set temp_data_object_id = data_object_id, data_object_id = null;
184456 rows updated.
Elapsed: 00:00:04.49Notice that our column of interest is now entirely null, so the restriction against reducing its scale or precision will not longer impact us.
07:11:00 >
07:11:17 > select count(*), min(data_object_id), max(data_object_id), count(distinct data_object_id), count(data_object_id) from t3;
COUNT(*) MIN(DATA_OBJECT_ID) MAX(DATA_OBJECT_ID) COUNT(DISTINCTDATA_OBJECT_ID) COUNT(DATA_OBJECT_ID)
184456 0 0
1 row selected.
Elapsed: 00:00:00.04
07:11:51 > alter table t3 modify (data_object_id number(10,2))
07:12:33 > /
Table altered.
Elapsed: 00:00:00.07
07:12:35 > update t3 set data_object_id=temp_data_object_id;
184456 rows updated.
Elapsed: 00:00:04.01
07:14:40 > select count(*), min(data_object_id), max(data_object_id), count(distinct data_object_id), count(data_object_id) from t3;
COUNT(*) MIN(DATA_OBJECT_ID) MAX(DATA_OBJECT_ID) COUNT(DISTINCTDATA_OBJECT_ID) COUNT(DATA_OBJECT_ID)
184456 0 1526320 12225 70092
1 row selected.
Elapsed: 00:00:00.09
07:14:49 > alter table t3 drop column temp_data_object_id;
Table altered.
Elapsed: 00:00:02.40
07:15:11 > desc t3
Name Null? Type
OWNER NOT NULL VARCHAR2(30)
OBJECT_NAME NOT NULL VARCHAR2(30)
SUBOBJECT_NAME VARCHAR2(30)
OBJECT_ID NOT NULL NUMBER
DATA_OBJECT_ID NUMBER(10,2)
OBJECT_TYPE VARCHAR2(19)
CREATED NOT NULL DATE
LAST_DDL_TIME NOT NULL DATE
TIMESTAMP VARCHAR2(19)
STATUS VARCHAR2(7)
TEMPORARY VARCHAR2(1)
GENERATED VARCHAR2(1)
SECONDARY VARCHAR2(1)
NAMESPACE NOT NULL NUMBER
EDITION_NAME VARCHAR2(30)
07:15:15 > -
How do i check number datatype with precision is 6
Hello,
If a variable is declared as number datatype with precision 6.
Foe testing purpose ,i want to check which value is having precision >6
because iam getting ORA-06502 error PL/SQL numeric or value error
what can be the reasonHi Kamal,
In my case everyday a nightly job is executed to execute the stored procs
and stores the errors in error table,
The complete eror description is
error in updating grant_vest_estm_amrtzn redistributing the overlapping expense ORA-06502:PL/SQL numeric or value error
Here is the query-- which is placed ina stored proc
o_Error_Text := 'Error in updating GRANT_VEST_ESTM_AMRTZN redistributing the overlapping expense ' ;
EXECUTE IMMEDIATE 'UPDATE GRANT_VEST_ESTM_AMRTZN
SET GRN_ESTM_TRNCHE_EXPS_Y = :1,
GRN_AMRTN_ORIGL_TRNCHE_EXPS_Y = :2,
GRN_VEST_ADJST_OPT_Q = :3
WHERE ORG_GRP_I = :4
AND GRN_N = :5
AND GRN_VEST_D = :6'
USING V_GRN_ESTM_TRNCHE_EXPS_Y(I), V_GRN_AMRTN_ORIG_TRNC_EXP_Y(I), V_GRN_VEST_NEW_ADJST_OPT_Q(I),
I_ORG_GRP_I, NEW_GRN(I), V_GRN_VEST_D(I);
V_GRN_ESTM_TRNCHE_EXPS_Y(I) are calculated based on some conditions
for example
V_GRN_ESTM_TRNCHE_EXPS_Y (I) := V_GRN_ESTM_TRNCHE_EXPS_Y(I) +
( (V_REM_GRN_VEST_ORIGL_OPT_Q(I) / V_GRN_VEST_OLD_ORIGL_OPT_Q(J)) * V_GRN_ESTM_EXPS_Y(J));
V_GRN_AMRTN_ORIG_TRNC_EXP_Y(I) := V_GRN_AMRTN_ORIG_TRNC_EXP_Y(I) +
( (V_REM_GRN_VEST_ORIGL_OPT_Q(I) / V_GRN_VEST_OLD_ORIGL_OPT_Q(J)) * V_GRN_ESTM_ORIGL_A(J));
V_GRN_VEST_NEW_ADJST_OPT_Q(I) := V_GRN_VEST_NEW_ADJST_OPT_Q(I) +
( (V_REM_GRN_VEST_ORIGL_OPT_Q(I) / V_GRN_VEST_OLD_ORIGL_OPT_Q(J)) * V_GRN_VEST_OLD_ADJST_OPT_Q(J));
V_REM_GRN_VEST_OLD_ORIGL_OPT_Q(J) := V_GRN_VEST_OLD_ORIGL_OPT_Q(J) - V_REM_GRN_VEST_ORIGL_OPT_Q(I);
V_REM_GRN_VEST_ORIGL_OPT_Q(I) := 0;
Looking forward for the response
Maybe you are looking for
-
Can I connect 5.1 AND 2.1 Systems to my X-fi Xtreme Music?
What is the best way to connect both my logitech z5500 5.1 system AND my 2.1 Klipsch system to my X-fi Xtreme Music card? The Klipsch 2.1's connect using a standard 3.5mm headphone jack. I want sound in two different rooms. One system in the backroom
-
Is it possible to create exception rule in Comparator sort order?
I have been working on trying to learn how to use Comparators to sort Collections... In one of my recent experiments, I tried to order a PriorityQueue of String elements alphabetically, in ascending order, with one exception: any word beginning with
-
Oracle Application Express 3.0 and Ajax
Can we build Web 2.0 (ajax) application in Oracle Application Express 3.0? - Open discussion - Resources links welcome Please contribute your thoughts thank you.
-
User Profiles -- A new one appeared, help!
Working sharing some files between users on my parent's new iMac. Spent all day setting up address book. Now there are is an alias called "mother" that is available to log in and a folder called "mom" that has all the settings that used to be in "mot
-
New offer for Photoshop and Lightroom
I bought Photoshop CC last week for $19.99 per month and received an offer today for Photoshop and Lightroom for $9.99. Can I update my plan to take advantage of this new offer?