Numeric Data Types
What are the numeric data types in Oracle? I created the following table:
CREATE TABLE CONTRACT (
CONTRACT_ID INTEGER NOT NULL,
QUOTE_ID LONG,
BOOK_RATE NUMBER,
IBTSS_CONTRACT_NUM VARCHAR2(20)
But in the Object Browser, the data type of CONTRACT_ID becomes NUMBER which can accept numbers such as 123.25. This is not my intention. I thought LONG is not an acceptable data type but it actually works and the data type of QUOTE_ID shown in the Object Browser is correctly LONG. However, both LONG and INTEGER behave like NUMBER because I can insert values such as 123.56 into columns CONTRACT_ID and QUOTE_ID.
So my questions are
1. What are the supported numeric data types in Oracle?
2. Are we supposed to use INTEGER or LONG at all since they do not behave as expected? Are we supposed to always use NUMBER(n) instead?
Thanks.
Edited by: user10896541 on Apr 23, 2009 2:43 PM
LONG in Oracle is not an integer data type. LONG is a depricated data type that was designed to store text more than 4k in length. Oracle has been asking folks to stop using LONG and use CLOB (or BLOB for binary data) since 8.1.5.
INTEGER maps to NUMBER(38) which does not allow decimal values. You might be confused because Oracle truncates values if you insert them into a column that has less precision than the column allows
SQL> create table x (
2 col1 integer
3 );
Table created.
SQL> desc x;
Name Null? Type
COL1 NUMBER(38)
SQL> insert into x values( 1 );
1 row created.
SQL> insert into x values( 1.25 );
1 row created.
SQL> select * from x;
COL1
1
1
SQL>Justin
Similar Messages
-
Sybase ODBC driver for Linux - handle of numeric data type is not correctly
Linux RHEL 4 + Oracle 10.2.0.3 - all work fine. But numeric data type does not coorectly show values. I gor driver from ASE 15. Who has already resolve this issue???
To begin with:
- what is the table definition in Sybase?
- what is the table definition in Oracle: SQL> describe <table>@<sybase_hsodbc_link>;
and probably you need to start a gateway debug trace (HS_FDS_TRACE_LEVEL-DEBUG) and an ODBC trace to see what happens.
You could paste the appropriate section(s) here. Also paste the init<hsodbc>.ora and odbc.ini .
Ed -
Properties (group and channel) added are not a numeric data type.
I am using a dataplugin to add both group and channel custom properties. The properties are both text and numeric, doubles and integers.
When I create a query in Navigator, I select the custom property using the dropdown, but the operator dropdown only has "=" or "<>". The property displayed in the Data Portal is a float number. I was having this problem when I was adding custom properties using a script. I then tried "Navigatorettings/My DataFinder/Reset/Reset Index", then repopulated my Search Area, using the dataplugin on my raw data files. At this point, all my properties only have the "=" or "<>" operator choices in the query.
So it appears that my properties are numeric in the Data Portal, but string in the Navigator Query.
In advance, thanks
Solved!
Go to Solution.Hi Bill,
could it be the properties you are talking about are already "optimized" for query?
In case yes, did you do the optimization by script like
Dim oMyDataFinderSettings
Set oMyDataFinderSettings = Navigator.ConnectDataFinder("My DataFinder").GetSettings()
Call oMyDataFinderSettings.OptimizeCustomProperty(eSearchChannel, "Author_age")
And did you do this, before DataFinder has indexed some of your files?
In case yes, DataFinder has to make a guess the datatype of the property without example - so always "string" is chosen.
(If DataFinder has already indexed some(or better all) files containing the property, DataFinder will "optimze" the property in the datatype which occurs most for this property.)
In case you know the datatype of the property you are about to "optimze", you can provide this information to DataFinder
Call oMyDataFinderSettings.OptimizeCustomProperty(eSearchChannel, "myText", DataTypeString)
Call oMyDataFinderSettings.OptimizeCustomProperty(eSearchChannel, "myInt", DataTypeInt32)
Call oMyDataFinderSettings.OptimizeCustomProperty(eSearchChannel, "myFloat", DataTypeFloat64)
Call oMyDataFinderSettings.OptimizeCustomProperty(eSearchChannel, "myDate", DataTypeDate)
Stefan -
Arithmetic Overflow error converting float to data type numeric
Hi,
Am facing strange issue,I have function which returns money datatype and assigning the return money value to float datatype in table.
Error msg:
Msg 8115, Level 16, State 6, Procedure GBCalcCatalogPriceNewV2, Line 204
Arithmetic overflow error converting float to data type numeric.
The statement has been terminated.
Strange thing is the same stored procedure is working fine in production environment,but in the deveopment i see this error.Am scared if the same happens in the production environment.Please advice and advance
thanks
Regards
RAjStrange thing is the same stored procedure is working fine in production environment,
How could that be strange? This is an error that occurs depending on the data. Accidents that are waiting to happen will happen sooner or later.
Then again, a development database may be more prone to such errors, because data that entered are completely out of whack with real life data. Still it is a warning sign. If you have some place where you convert data from float to numeric, you must consider
the risk that the float value is outside the range for the numeric data type. How do you prevent that from happening? Maybe a CHECK constraint on the column? Of if the data origins from a money column, use a numeric data type with sufficient precision.
Erland Sommarskog, SQL Server MVP, [email protected] -
Activation error while changing the data type of a field of a table
hi friends,
i am facing one problem while changing a data type of a field of a table.
i just created one table(Yqm32) .i have assigned charcter data type to one field(ztotal_count) .now i want to change this charcter data type to numeric data type.
while changing to NUMC data type activation error is comming as below.
Table is not yet classified
Field ZTOTAL_COUNT: Type change
ALTER TABLE is not possible
Structure change at field level (convert table YQM32)
Check on table YQM32 resulted in errors
Table YQM32 could not be activated
(E- Structure change at field level (convert table YQM32)
plz suggest.i need to change the data type from char to numc.
Thanks & RegardsHi Pabitra......
From the SE11 change the table as u wanted and then from menubar select
UTILITIES--> DATABASE UTILITY
It will open database utility
there u select the Activate and adjust database button.
then the database table will get adjusted.
just try it once.........
Suresh...... -
Discoverer 4i - Time Series Data type support
Does Discoverer 4i support time-series data type i.e. the ability to store an entire string of
numbers representing for example daily or weekly data points?
Thanks & Regards,
DeeptiHi O G-M,
Each model must contain one numeric or date column that is used as the case series, which defines the time slices that the model will use. The data type for the key time column can be either a datetime data type or a numeric data type. However, the column must
contain continuous values, and the values must be unique for each series. The case series for a time series model cannot be stored in two columns, such as a Year column and a Month column. For more information about it, please see:
http://msdn.microsoft.com/en-us/library/ms174923(v=sql.100).aspx
Thanks,
Eileen
Eileen Zhao
TechNet Community Support -
I have rows coming in with three column values I need on the export, I don't want to change the export process that is in place ...and I can't change the import formats...
I would like to concatenate them and put them in the "Amount" field...can this be done?
Suggestions?
JzYou won't be able to do it in the Amount field because without using some sort of seperator i can't see how you will parse the values out later and this will give you issues at import with non numeric data type exceptions. Also if you can't change import formats you are extremely limited as this is where any sort of data manipulation is traditionally done.
Edited by: SH on May 13, 2011 8:39 PM -
In sql server 2000, what data type do I use for a field that
needs to show two decimal places? It is a weight field, so the
weight in ounces could be something like 12.25 and it needs to
store it this way in the database. I'm kind of new to sql server,
so any help would be greatly appreciated!You asked "In sql server 2000, what data type do I use for a
field that needs to show two decimal places?" and I answered
"decimal and numeric". How much clearer could I be?
Numeric data types with fixed precision and scale.
decimal[(p[, s])] and numeric[(p[, s])]
Fixed precision and scale numbers. When maximum precision is
used, valid values are from - 10^38 +1 through 10^38 - 1. The
SQL-92 synonyms for decimal are dec and dec(p, s).
p (precision)
Specifies the maximum total number of decimal digits that can
be stored, both to the left and to the right of the decimal point.
The precision must be a value from 1 through the maximum precision.
The maximum precision is 38.
s (scale)
Specifies the maximum number of decimal digits that can be
stored to the right of the decimal point. Scale must be a value
from 0 through p. The default scale is 0; therefore, 0 <= s
<= p. Maximum storage sizes vary, based on the precision.
I recommend that you load SQL Server Books Online on your
computer, as it is available free from Microsoft as a download and
it has everything you will probably need to know about SQL Server.
Or you could just use the online version at
SQL
Server 2000 Books Online
Phil -
How to Load Dates Data type from txtfile to Hyperion Planning
I have loaded numeric and string data for especify combination, for example
soruce Txtfile:
Year Measures Market Data1 Data2
"Jan","Sales","New York","120","2013/01/01"
Hyperion Planning:
(combinations in my target)
Jan,Sales,NewYork,E_1011--->120
Jan,Sales,NewYork,E_1008--->"not loaded"
E_1011 is defined as Numeric data type in Hyperion Planning
E_1008 is defined as Date data type in Hyperion Planning
In my Interface source file, field Data1,Data2 is defined as "String", why ODI is loading only Data1 field?, how can I do for load Data2 field.
Thanks for your help.AFAIK, I don't think you can use the same description for multiple members.
What i would suggest is to concatenate your member name and alias and use that as Alias. As your account member is the placeholder and would not confuse anyone. Ensure that you maintain the 80 character limit
Regards
Amarnath
ORACLE | Essbase -
hi
dEFINE
C,P,F,X,N,I DATA TYPES
GIVE ME EXP. ALSOU can check this
<b>ABAP/4 Data Types</b>
There are two main categories of data in ABAP/4: character and numeric. Variables receive special treatment by the ABAP/4 processor based on their category that goes beyond the usual treatment given by other languages. Therefore, it is especially important for you to be able to recognize and distinguish between the character and numeric data types.
Character Data Types
The character data types are shown in Table 7.2. Notice that they include type n. Internal lengths are given in bytes. A dash in the Max length column appears for fixed length data types.
Table 7.2 List of Character Data Types
Data
Type Internal
Description Default
Internal
Length Max
Internal
Length
Valid
Values Default
Initial
Value
c character 1 65535 Any char Blank
n numeric text 1 65535 0-9 0
d date 8 (fixed) - 0-9 00000000
t time 6 (fixed) - 0-9 000000
x hexadecimal 1 65535 Any
The Default Initial Value column indicates the value given to the variable by default if you do not specify one using the value addition.
Internal Representation of Variables
Numeric text variables are called numeric character variables and hold unsigned positive integers. Each digit occupies one byte, and internally each is stored as a character. This is a character data type. It can only contain the characters 0-9.
Use numeric text to hold numbers that are used as unique identifiers, such as document numbers, account numbers, and order numbers. Also, use it for variables that hold a numeric extracted from a character data type. For example, if you were to extract the two-character month from a date field and needed a variable to store it, you should use a type n field.
Date and time are fixed length data types. You should not specify a length on the data statement for them. Values for date and time variables are always stored internally as YYYYMMDD and HHMMSS, respectively. The current date is available in the system field sy-datum and the current time in sy-uzeit.
NOTE
The values of sy-datum and sy-uzeit are set at the beginning of program execution and do not change until the program ends. If you need access to the most current date and time during execution of a long-running pro-gram, use the statement get time. It updates the values of sy-datum and sy-uzeit to reflect the current date and time.
Absolute time values that have millisecond precision are not used in R/3. However, relative time values are available to millisecond precision. To obtain these, use the get run time statement and store them using data type i. See the chapter on runtime analysis for more details.
Numeric Data Types
The numeric data types are shown in Table 7.3. A dash in the Max Length column indicates the length cannot be changed. An asterisk indicates the attribute is machine-dependent.
Table 7.3 Numeric Data Types
Data
Type
Description Default
Internal
Length
Max
Length
Max
Decimals
Valid
Values Default
Initial
Value
i integer 4(fixed) - 0 -231 to +231 0
p packed decimal 8 16 14 0-9 . 0
f floating-point 8 8 15* -1E-307 to 1E308 0.0
All of the variables in Table 7.3 are signed. In floating-point variables, the exponent is also signed.
Use integers for variables that will be involved in simple computations or when no decimal points are required. Variables such as counters, indexes, positions, or offsets are good examples.
A decimal variable stores (L*2)-1 digits, where L is the length of the variable in bytes. Decimal values are stored two digits per byte, except the end byte, which contains a single digit and a sign. The decimal point itself is not stored; it is an attribute of the definition. For example, data f1(4) type p defines a variable f1 that is four bytes long and can hold seven digits (plus a sign), as shown in Figure 7.2. data f2(3) type p decimals 2 defines a variable f2 that is three bytes long and can hold five digits (plus a sign). The definition data f3 type p defines a variable f3 capable of holding 15 digits because the default length for type p is 8.
Refer this link for the above and some sample programs
http://cma.zdnet.com/book/abap/ch07/ch07.htm -
Error converting data type nvarchar to numeric 'witholding tax' (OWHT)
Hi Guys.
After I have upgraded my clients 2007 PL 30 database to 8.81 PL05, and running a repair to fix inconsistincies, I am receiveing some error when opening any sales documents.
It takes place when I open a sales document, or browse previous docs. When browsing previous docs, it onlly happens on some of them.
I also receive a different error when viewing sales orders: Error converting data type nvarchar to numeric (CRD2).
Any ideas how to fix it?
It does not limit me from processing and using the rest of the functionality. All calculations with queries in the docs are still working.
Thanks.Hi,
Please check Note No. : 1402855 and see if the same applied to the issue mentioned by you.
Kind Regards,
Jitin
SAP Business One Forum Team -
Im getting an error when running a procedure that includes this code.
I need to select from a dynamic column name and save the result in a variable, but seem to be having trouble with the values being fed to sp_executesql
DECLARE @retval AS DECIMAL(12,2)
DECLARE @MonthVal VARCHAR(20), @SpreadKeyVal INT
DECLARE @sqlcmd AS NVARCHAR(150)
DECLARE @paramdef NVARCHAR(150)
SET @MonthVal = 'Month' + CAST(@MonthNumber AS VARCHAR(2) );
SET @SpreadKeyVal = @SpreadKey; --CAST(@SpreadKey AS VARCHAR(10) );
SET @sqlcmd = N' SELECT @retvalout = @MonthVal FROM dbo.CourseSpread WHERE CourseSpreadId = @SpreadKeyVal';
SET @paramdef = N'@MonthVal VARCHAR(20), @SpreadKeyVal INT, @retvalout DECIMAL(12,2) OUTPUT'
--default
SET @retval = 0.0;
EXECUTE sys.sp_executesql @sqlcmd,@paramdef, @MonthVal = 'Month4',@SpreadKeyVal = 1, @retvalout = @retval OUTPUT;
SELECT @retval
DECLARE @return_value DECIMAL(12,2)
EXEC @return_value = [dbo].[GetSpreadValueByMonthNumber]
@SpreadKey = 1,
@MonthNumber = 4
SELECT 'Return Value' = @return_value
Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to numeric.Please follow basic Netiquette and post the DDL we need to answer this. Follow industry and ANSI/ISO standards in your data. You should follow ISO-11179 rules for naming data elements. You should follow ISO-8601 rules for displaying temporal data. We need
to know the data types, keys and constraints on the table. Avoid dialect in favor of ANSI/ISO Standard SQL. And you need to read and download the PDF for:
https://www.simple-talk.com/books/sql-books/119-sql-code-smells/
>> I need to select from a dynamic column name and save the result in a variable, but seem to be having trouble with the values being fed to sp_executesql <<
This is so very, very wrong! A column is an attribute of an entity. The idea that you are so screwed up that you have no idea if you want
the shoe size, the phone number or something else at run time of this entity.
In Software Engineering we have a principle called cohesion that says a model should do one and only one task, have one and only one entry point, and one and only one exit point.
Hey, on a scale from 1 to 10, what color is your favorite letter of the alphabet? Yes, your mindset is that level of sillyity and absurdity.
Do you know that SQL is a declarative language? This family of languages does not use local variables!
Now think about “month_val” and what it means. A month is a temporal unit of measurement, so this is as silly as saying “liter_val” in your code. Why did you use “sp_” on a procedure? It has special meaning in T-SQL.
Think about how silly this is:
SET @month_val = 'Month' + CAST(@month_nbr AS VARCHAR(2));
We do not do display formatting in a query. This is a violation of at the tiered architecture principle. We have a presentation layer. But more than that, the INTERVAL temporal data type is a {year-month} and never just a month. This is fundamental.
We need to see the DDL so we can re-write this mess. Want to fix it or not?
--CELKO-- Books in Celko Series for Morgan-Kaufmann Publishing: Analytics and OLAP in SQL / Data and Databases: Concepts in Practice Data / Measurements and Standards in SQL SQL for Smarties / SQL Programming Style / SQL Puzzles and Answers / Thinking
in Sets / Trees and Hierarchies in SQL -
CAST Not working for me - Arithmetic overflow error converting int to data type numeric - error
GPM is DECIMAL(5,2)
PRICE is DECIMAL(11,4)
COST is DECIMAL(7,2)
Trying to update the Gross Profit Margin % field and I keep getting the "Arithmetic overflow error converting int to data type numeric" error.
UPDATE SMEMODETAIL SET SMD_GPM = (SMD_PRICE-SMD_COST) / SMD_PRICE * 100
FROM SMEMODETAIL WHERE SMD_PRICE<>0 AND SMD_QUANTITY<>0
Example record:
SMD_PRICE SMD_COST GPM%
1.8500 1.62 12.4324324324324300
I added cast and I still get the error.
How do I format to get this to work?
Thanks!Hi GBerthume,
The error is caused by some value such as 1000.01 of the expression (SMD_PRICE-SMD_COST) / SMD_PRICE * 100 exceeds the
precision of the column(DECIMAL(5,2)). The example data doesn't cause the overflow error for the value of the expression is 12.43 which is in the scope of DECIMAL(5,2).
USE TestDB
CREATE TABLE SMEMODETAIL
SMD_PRICE DECIMAL(11,4),
SMD_COST DECIMAL(7,2),
SMD_GPM DECIMAL(5,2)
INSERT INTO SMEMODETAIL(SMD_PRICE,SMD_COST) SELECT 1.8500,1.62
UPDATE SMEMODETAIL SET SMD_GPM = (SMD_PRICE-SMD_COST) / SMD_PRICE * 100
FROM SMEMODETAIL WHERE SMD_PRICE<>0-- AND SMD_QUANTITY<>0
SELECT * FROM SMEMODETAIL
DROP TABLE SMEMODETAIL
The solution of your case can be either scale the DECIMAL(5,2) or follow the suggestion in Scott_morris-ga's to check and fix your data.
If you have any question, feel free to let me know.
Eric Zhang
TechNet Community Support -
Data type conversion from packed to numeric
Hi Experts,
i have a question on data type conversion. My requirement is:
i have fields of type packed decimal in my internal table itab. I need to convert the values of packed decimal fields in itab to numeric type.
Example:
Data: begin of itab occurs 0,
ebeln like ekko-ebeln,
ebelp like ekpo-ebelp,
menge(15) type p decimals 2,
netpr(15) type p decimals 2,
end of itab.
if itab-menge has a value of 2.00, i need to convert that value to ' 200'. Right justified.
if itab-netpr has a value of 1,234.56, i need to convert that to ' 123456'.
The above internal table itab is passed to the Function module GUI_DOWNLOAD and the itab data is downloaded to a text file.
Please let me know how to acheive this objective.Hi ,
You can use
SPLIT at '.' into v1 v2
concatenate v1 v2 into vv1.
REPORT ZDN_TEST_001 .
data: lv_var1(15) type p decimals 2 value '123.00'.
data: lv_var2(15) type p decimals 5 value '123.12121'.
data: lv_varc1(15) type c.
data: lv_varc2(15) type c.
data: lv_varc1d(2) type c.
data: lv_varc2d(5) type c.
data: lv_varc11(15) type c.
data: lv_varc21(15) type c.
write:/ lv_var1.
write:/ lv_var2.
*1)write & REPLACE.
write lv_var1 to lv_varc1.
write lv_var2 to lv_varc2.
REPLACE '.' WITH SPACE INTO lv_varc1.
CONDENSE lv_varc1 NO-GAPS.
REPLACE '.' WITH SPACE INTO lv_varc2.
CONDENSE lv_varc2 NO-GAPS.
write:/ lv_varc1.
write:/ lv_varc2.
*2)split & concatinate
write lv_var1 to lv_varc1.
write lv_var2 to lv_varc2.
split lv_varc1 at '.' into lv_varc1 lv_varc1d.
concatenate lv_varc1 lv_varc1d into lv_varc11.
split lv_varc2 at '.' into lv_varc2 lv_varc2d.
concatenate lv_varc2 lv_varc2d into lv_varc21.
write:/ lv_varc11.
write:/ lv_varc21. -
Error converting data type varchar to numeric - maybe non printable character?
Hello all. I'm having some trouble converting a column in my table from varchar(50) to decimal(20,4). I've also tried to convert it to int and had no luck. In trying to find the records with non numeric data, I ran this query...
SELECT *
FROM [table]
WHERE [column] not like '%[^0-9]%'
My result set was 32 rows where the field in question had zeros. This doesn't make sense to me. If it was a real zero, it would have been excluded from the query.
So, I flipped it around and ran the following query, and got the same results.
SELECT *
FROM [table]
WHERE [column] = '0'
If it's really a string 0, what would keep it from converting to a numeric type? I'm wondering if there are non printable characters in there because this table was populated via SSIS package using a flat file.
Thanks for any help you can provide!
WeeLassI have discovered one of the values that will not convert. It is '-1.2317 ' and I tried RTRIM and those trailing spaces stay there.
It has a length of 8, and ASCII value of 45, and converting to varbinary gives 0x2D312E3233313709.
The 45 and 2D both point to a negative sign. This one does indeed have a negative sign, but it's in the front, not trailing. Also, another value that was failing was not negative, but did have the trailing spaces.
Any ideas on how to figure out what those spaces actually are? Hopefully, if I know that, then I can know how to get rid of them.
WeeLass
It may be a hard space
RTRIM trims only soft spaces
try this and see if works
REPLACE(ColumnName,CHAR(160),'')
Please Mark This As Answer if it solved your issue
Please Vote This As Helpful if it helps to solve your issue
Visakh
My Wiki User Page
My MSDN Page
My Personal Blog
My Facebook Page
Maybe you are looking for
-
Greater than 255 characters not allowed - CSV attachment
While sending the data as a CSV attachemnent, its not allowing more than 255 characters per line. I want to send more than 255 characters in a line (in the CSV attacment. how to do this ? The function module which i used is SO_new_document_att_send_
-
1st generation itouch upgrade from OS 1.1.5 to 3.1
Trying to upgrade the iOS 1.1.5 to 3.1 using an iMac and the latest version of iTunes. Update button says that 1.1.5 is the latest version. Ipod touch is 1st generation.
-
SOS Capture issue selects webcam not camcorder mac
Sorry to beat a dead horse if this has been posted already but I ran into an issue while capturing some videos. I currently am trying to use two cameras to capture some videos, GL2 and XH-A1, while connecting to Premier however the webcam is selected
-
Re the iTunes card: I received the message "already redeemed." I don't recall using it. Is there a way to match purchases to the iTunes card?
-
NLS_LANG Documaker Studio Setup
Hi, I'm trying to configure a ODBC connection link with my DMStudio Project. the fact is that Windows ODBC connection with the Instant Cliente 11.2 is working and connecting when is set up on Windows ODBC manager. Connection is succesfull. But, when