Difference between nvarchar2( 10) and varchar2( 10 char)

Hi ,
I had to enhance my application's DB to support unicode data entries(Multilingual data entries) and retrieval. I want to know the basic difference between the following data type decalrations:
nvarchar2( 10) and varchar2( 10 char)
Can any one suggest me which would be a optimum choice?
regards,
Siddarth

Yes, you are almost correct.
Can you read Japanese Character ? (There is no need to understand Japanese words meanings).
Are you ready? Let's go!
SQL> create table tab_size(col varchar(3));
Table created.
SQL> insert into tab_size values ('abc');
1 row created.
SQL> insert into tab_size values ('abcd');
insert into tab_size values ('abcd')
ERROR at line 1:
ORA-12899: value too large for column "USHI"."TAB_SIZE"."COL" (actual: 4, maximum: 3)
SQL> insert into tab_size values('アイウ'); /* This is  3 characters (3byte) */
1 row created.
SQL> insert into tab_size values('アイウエ'); /* This is  4 characters (4byte) */
insert into tab_size values('アイウエ')
ERROR at line 1:
ORA-12899: value too large for column "USHI"."TAB_SIZE"."COL" (actual: 4, maximum: 3)
SQL> insert into tab_size values ('あ'); /* This is 1 character (2bytes) */
1 row created.
SQL> insert into tab_size values ('あい'); /* This is 2 characters (4bytes) */
insert into tab_size values ('あい')
ERROR at line 1:
ORA-12899: value too large for column "USHI"."TAB_SIZE"."COL" (actual: 4, maximum: 3)
SQL> insert into tab_size values ('aあ'); /* This is 2 characters (3bytes) */
1 row created.
SQL> insert into tab_size values ('abあ'); /* This is 3 characters (4bytes) */
insert into tab_size values ('abあ')
ERROR at line 1:
ORA-12899: value too large for column "USHI"."TAB_SIZE"."COL" (actual: 4, maximum: 3)
SQL> drop table tab_size;
Table dropped.
SQL> create table tab_char (col varchar2(3 char));
Table created.
SQL> insert into tab_char values ('abc');
1 row created.
SQL> insert into tab_char values ('abcd');
insert into tab_char values ('abcd')
ERROR at line 1:
ORA-12899: value too large for column "USHI"."TAB_CHAR"."COL" (actual: 4,
maximum: 3)
SQL> insert into tab_char values ('あいう');  /* This is 3 characters (6bytes) */
1 row created.
SQL> insert into tab_char values ('あいうえ'); /* This is 4 characters (8bytes) */
insert into tab_char values ('あいうえ')
ERROR at line 1:
ORA-12899: value too large for column "USHI"."TAB_CHAR"."COL" (actual: 4, maximum: 3)
SQL> insert into tab_char values ('aあい'); /* This is 3 characters (5bytes) */
1 row created.
SQL> insert into tab_char values ('abあい'); /* This is 4 characters (6bytes) */
insert into tab_char values ('abあい')
ERROR at line 1:
ORA-12899: value too large for column "USHI"."TAB_CHAR"."COL" (actual: 4, maximum: 3)谢谢。
ありがとう。
Thank you for reading.

Similar Messages

  • DIFFERENCE BETWEEN THE DATA DECLARATIONS NVARCHAR2 AND VARCHAR2(x CHAR)

    CAN ANYONE HELP ME FIND THE DIFFERENCE BETWEEN THE DATA DECLARATIONS; NVARCHAR2 AND VARCHAR2(x CHAR), WHERE X IS THE SIZE OF DATA TO BE HELD WITH THE VARIABLE OR ATTRIBUTE

    Duplicate posting....
    Difference between nvarchar2(10) and varchar2(10 char )
    Difference between nvarchar2( 10) and varchar2( 10 char)
    Please refer also...
    Nvarchar2

  • Difference between VARCHAR2(40 BYTE) and VARCHAR2(40 CHAR)

    What is the difference between using VARCHAR2(40), VARCHAR2(40 BYTE0, and VARCHAR2(40 CHAR)

    With a single byte character set the two definitions are effictively equal, but with a multibyte character set the two definitions will be different. Say you have built Oracle using a fixed 2 byte character set. 40 characters would be 80 bytes so the varchar2(40 BYTES) would hold only 20 characters.
    Search on NLS parameters and database character set for more information.
    HTH -- Mark D Powell --

  • What is difference between local variable and property node ?

    What is difference between local variable and property node ?
    " 一天到晚游泳的鱼"
    [email protected]
    我的个人网站:LabVIEW——北方客栈 http://www.labview365.com
    欢迎加入《LabVIEW编程思想》组——http://decibel.ni.com/content/groups/thinking-in-labview

    To make things clear, here are two small examples that show how nasty locals and value properties can be to the naive programmer.
    - Open the diagram of the race condition.vi before running it and try to predict what will be the values of the two counters after the third run.
    - Use the Compare Locals Properties and Wires.vi to find out how slow locals and value properties can be (times 1000+).
    This being demonstrated, I must add that I use globals and value properties quite often, because they are often very convenient
    Chilly Charly    (aka CC)
             E-List Master - Kudos glutton - Press the yellow button on the left...        
    Attachments:
    Race condition.vi ‏9 KB
    Compare Locals Properties and Wires.vi ‏18 KB

  • Difference between primary key and primary index

    Dear All,
             Hi... .Could you pls tell me the difference between primary key and primary index.
    Thanks...

    Hi,
    Primary Key : It is one which makes an entry of the field unique.No two distinct rows in a table can have the same value (or combination of values) in those columns.
    Eg: first entry is 111, if you again enter value 111 , it doesnot allow 111 again. similarly for the strings or characters or numc etc. Remember that for char or numc or string 'NAME' is not equal to 'name'.
    Primary Index: this is related to the performance .A database index is a data structure that improves the speed of operations in a table. Indices can be created using one or more columns, providing the basis for both rapid random lookups and efficient ordering of access to records. The disk space required to store the index is typically less than the storage of the table (since indices usually contain only the key-fields according to which the table is to be arranged, and excludes all the other details in the table), yielding the possibility to store indices into memory from tables that would not fit into it. In a relational database an index is a copy of part of a table. Some databases extend the power of indexing by allowing indices to be created on functions or expressions. For example, an index could be created on upper(last_name), which would only store the uppercase versions of the last_name field in the index.
    In a database , we may have a large number of records. At the time of retrieving data from the database based on a condition , it is a burden to the db server. so whenever we create a primary key , a primary index is automatically created by the system.
    If you want to maintain indices on other fields which are frequently used in where condition then you can create secondary indices.
    Reward points if helpful.
    Thanks,
    Sirisha..

  • I want to know the difference between Days column and Day1 Column

    Hi All,
    I used this query:
    SELECT to_char(return_date_time,'dd/mon/yyyy hh24:mi:ss') Test,
    DECODE ('I', 'I', DECODE (1, NULL, NULL, 0, NULL, SYSDATE + 1)) Days,
    DECODE ('I', 'I', SYSDATE + 1) Day1
    FROM fm_curr_locn
    WHERE patient_id = 'DU00002765'
    output: 
    Test
    Days
    Day1
    26/oct/2013 00:00:00
    26-OCT-13
    10/26/2013 3:06:59 PM
    I want to know the difference between Days column and Day1 column and why the days column didnt show the time
    Please anyone help.....
    Regards
    Shagar M

    Pleiadian wrote:
    It is the decode statement that is doing this.
    The format of decode is:
    decode(expression, search1, result1, search2, result2, searchn, resultn, default)
    All result fields must be of the same datatype and will be of the datatype of the first result (result1 in this example)
    In your example (the decode for the field Days) the first result is a NULL. I suspect (gurus? anyone?) that Oracle will use the varchar2 overload of the decode statement, and the date field will be converted to varchar2 using your NLS_DATE_FORMAT settings.
    In the second decode statment (Day1) the first result is of datatype date, so the result of the decode statement will be a date field (and will be parsed as such by your sql development tool)
    I agree, as NULL is the first result returned the datatype is undetermined, so Oracle is picking VARCHAR2 over others, and causing an implicit datatype conversion on the resultant date value, whereas the other which is returned as a date will use the local settings of the client tool being used.
    I can replicate the 'issue' in Toad, and it's rectified if we cast the first returned value of the decode statement...
    SELECT DECODE ('I', 'I', DECODE (1, NULL, CAST(NULL AS DATE), 0, NULL, SYSDATE + 1)) Days,
           DECODE ('I', 'I', SYSDATE + 1) Day1
    FROM dual

  • Wat is the exact differences between clustered table and pooled table

    hi,
       can you tell me ravi...wat is the exact differences between clustered table and pooled table
    with regards//
    anilreddyg

    Hi Anil Reddy
    Pooled Tables, Table Pools, Cluster Tables, and Table Clusters
    These types of tables are not transparent in the sense that they are not legible or manageable directly using the underlying database system tools. They are managed from within the R/3 environment from the ABAP dictionary and also at runtime when they are loaded into application memory.Pool and cluster tables are logical tables. Physically, these logical tables are arranged as records of transparent tables. The pool and cluster tables are grouped together in other tables, which are of the transparent type. The tables that group together pool tables are known as table pools, or just pools; similarly, table clusters, or just
    clusters, are the tables which group cluster tables.Not all operations that can be performed over transparent tables can be executed over pool or cluster tables.
    For instance, you can manage these tables using Open SQL calls from ABAP, but not Native SQL.These tables are meant to be buffered and loaded in memory, because they are commonly used for storing internal control information and other types of data with no external (business) relevance. SAP recommends that tables of pool or cluster type be used exclusively for control information such as
    program parameters, documentation, and so on. Transaction and application data should be stored in transparent tables.
    Table Pools
    From the point of view of the underlying DBMS as from the point of view of the ABAP dictionary, a table pool is a transparent table containing a group of pooled tables which, when created, were assigned to this table pool.
    Field Type Description
    TABNAME CHAR(10) Table name
    VARKEY CHAR(n) Maximum key length n =< 110
    DATALN INT2(5) Length of the VARDATA record returned
    VARDATA RAW(m) Maximum length of the data varies according to DBMS
    Table Clusters
    Similarly to pooled tables, cluster tables are logical tables which, when created, are assigned to a table cluster. Therefore, a table cluster, or just cluster, groups together several tables of type clusters.Several logical rows from different cluster tables are brought together in a single physical record. The records
    from the cluster tables assigned to a cluster are thus stored in a single common table in the database.A cluster contains a transparent cluster key which must be located at the start of the key of all logical cluster tables to be included in the cluster. As well, a cluster contains a long field (VARDATA), which contains the
    data of the cluster tables for this key. If the data does not fit into a field, continuation records are created.
    Field Type Description
    CLKEY1 CHAR(*) First key fields
    CLKEY2 CHAR(*) Second key field
    CLKEYN CHAR(*) nth key field
    PAGENO INT2(5) Number of the next page
    TIMESTMP CHAR(14) Time stamp
    PAGELG INT2(5) Length of the VARDATA record returned
    VARDATA RAW(*) Maximum length of the data section; varies according to database system
    Working with Tables
    The dictionary includes many functions for working with tables. There are five basic operations you can perform on tables: display, create, delete, modify, copy. Please do not confuse displaying a table with displaying the table entries (table contents). In order to display a table, it must previously exist; otherwise the system will display an error message in the status bar. For the following example, the table TABNA is used. To display this table, from the main dictionary screen, enter the table name in the Object name
    input field with the radio button selected next to Tables. Then, click on the Display button at the bottom of the screen, or press the F7 function key, or, alternatively,
    select Dictionary object Display from the menu.
    In this screen, you can see table information such as
    ¨ Table type, shown next to the name of the object. In the example, it is a transparent table.
    ¨ Short text description.
    ¨ Name of the user who made the last change, and the date of the change.
    ¨ Master language.
    ¨ Table status. On the screen, you can see this table is saved and active.
    ¨ Development class. For information on development classes, refer to Chap. 6.
    Delivery class, which sets the maintenance group for the table. It controls how tables will behave during client copy procedures, upgrades, and so forth.¨
    Tab. Maint. Allowed flag, which indicates whether you can generate a screen for maintaining table entries.
    ¨Then, on the lower part of the screen, you can see the table fields with all associated characteristics such as:
    ¨ Field name.
    ¨ Key indicator. When set, this field is the primary key, or part of it.
    ¨ Data element.
    ¨ Basic data type.
    ¨ Length.
    ¨ Check table.
    ¨ Short text, describing the field.
    Additional information about the table can be displayed by selecting the corresponding functions from the menu or directly from the application toolbar, such as keys, indexes, or technical settings
    Standard table:
    The key access to a standard table uses a sequential search. The time required for an access is linearly dependent on the number of entries in the internal table.
    You should usually access a standard table with index operations.
    Sorted table:
    The table is always stored internally sorted by its key. Key access to a sorted table can therefore use a binary search. If the key is not unique, the entry with the lowest index is accessed. The time required for an access is logarithmically dependent on the number of entries in the internal table.
    Index accesses to sorted tables are also allowed. You should usually access a sorted table using its key.
    Hash table:
    The table is internally managed with a hash procedure. All the entries must have a unique key. The time required for a key access is constant, that is it does not depend on the number of entries in the internal table.
    You cannot access a hash table with an index. Accesses must use generic key operations (SORT, LOOP, etc.).
    Index table:
    The table can be a standard table or a sorted table.
    Index access is allowed to such an index table. Index tables can be used to define the type of generic parameters of a FORM (subroutine) or a function module.
    Just have a look at these links:
    http://help.sap.com/saphelp_nw04/helpdata/en/90/8d7304b1af11d194f600a0c929b3c3/frameset.htm
    http://help.sap.com/saphelp_nw04/helpdata/en/74/83015785d811d295a800a0c929b3c3/frameset.htm
    Regards
    Sreeni

  • What is difference between sy-tabix and sy-index.

    SAP Seniors,
    Can you please let me know what is difference between sy-index and sy-tabix.
    I read the SAP help, it is confusing for me. it looks like both are same from help. please help me.
    Thank you
    Anitha.

    HI,
        Here is a brief description of difference between SY_TABIX and SY_INDEX and using them with several conditions.
    SY-TABIX
    Current line of an internal table. SY-TABIX is set by the statements below, but only for index tables. The field is either not set or is set to 0 for hashed tables.
    APPEND sets SY-TABIX to the index of the last line of the table, that is, it contains the overall number of entries in the table.
    COLLECT sets SY-TABIX to the index of the existing or inserted line in the table. If the table has the type HASHED TABLE, SY-TABIX is set to 0.
    LOOP AT sets SY-TABIX to the index of the current line at the beginning of each loop lass. At the end of the loop, SY-TABIX is reset to the value that it had before entering the loop. It is set to 0 if the table has the type HASHED TABLE.
    READ TABLE sets SY-TABIX to the index of the table line read. If you use a binary search, and the system does not find a line, SY-TABIX contains the total number of lines, or one more than the total number of lines. SY-INDEX is undefined if a linear search fails to return an entry.
    SEARCH <itab> FOR sets SY-TABIX to the index of the table line in which the search string is found.
    SY-INDEX
    In a DO or WHILE loop, SY-INDEX contains the number of loop passes including the current pass.
    Hope this helps.
    Thank you,
    Pavan.

  • Difference between sy-tabix and sy-index?

    tell me about sy-tabix and sy-index?what is the difference between sy-tabix and sy-index?
    Moderator Message: Please search before posting. Read the [Forum Rules Of Engagement |https://wiki.sdn.sap.com/wiki/display/HOME/RulesofEngagement] for further details.
    Edited by: Suhas Saha on Jun 18, 2011 5:33 PM

    HI,
        Here is a brief description of difference between SY_TABIX and SY_INDEX and using them with several conditions.
    SY-TABIX
    Current line of an internal table. SY-TABIX is set by the statements below, but only for index tables. The field is either not set or is set to 0 for hashed tables.
    APPEND sets SY-TABIX to the index of the last line of the table, that is, it contains the overall number of entries in the table.
    COLLECT sets SY-TABIX to the index of the existing or inserted line in the table. If the table has the type HASHED TABLE, SY-TABIX is set to 0.
    LOOP AT sets SY-TABIX to the index of the current line at the beginning of each loop lass. At the end of the loop, SY-TABIX is reset to the value that it had before entering the loop. It is set to 0 if the table has the type HASHED TABLE.
    READ TABLE sets SY-TABIX to the index of the table line read. If you use a binary search, and the system does not find a line, SY-TABIX contains the total number of lines, or one more than the total number of lines. SY-INDEX is undefined if a linear search fails to return an entry.
    SEARCH <itab> FOR sets SY-TABIX to the index of the table line in which the search string is found.
    SY-INDEX
    In a DO or WHILE loop, SY-INDEX contains the number of loop passes including the current pass.
    Hope this helps.
    Thank you,
    Pavan.

  • What is difference between sy-index and sy-tabix and where both are using ?

    what is difference between sy-index and sy-tabix and where both are using ?

    hi nagaraju
    sy-tabix is in Internal table, current line index. So it can only be used while looping at the internal table.
    sy-index is in Loops, number of current pass. This you can use in other loop statements also (like do-enddo loop, while-endwhile)
    SY-INDEX is a counter for following loops: do...enddo, while..endwhile
    SY-TABIX is a counter for LOOP...ENDLOOP, READ TABLE...
    Here is an example from which you can understand the difference between sy-tabix and sy-index.
    Itab is an internal table with the following data in it.
    id Name
    198 XYZ
    475 ABC
    545 PQR.
    loop at itab where id > 300.
    write :/ itab-id, itab-name , sy-tabix, sy-index.
    endloop.
    My output will be :
    475 ABC 2 1
    545 PQR 3 2
    Sy-tabix is the index of the record in internal table.
    sy-index gives the no of times of loop passes.
    So, for the first record in the output (475 ABC), 2 is the index of the record in internal table and as it is first time loop pass occured, sy-index value is 1.
    Regards,
    navjot
    award points

  • The difference between chapter markers and dvd studio pro markers

    Does anyone know what is the difference between chapter markers and dvd studio pro markers? I can not find anywhere on Google. Also in the tutorials I have seen, suggesting DVD Studio Pro markers, but it did not mention the chapter markers.
    Thanks,

    "Adding Chapter and Compression Markers to Your Sequence
    Once you have your edited sequence or program finished, you can add markers to the sequence for use on DVD. Markers are reference points you can place within clips or sequences that identify specific frames. There are two kinds of markers you can add that directly relate to authoring a DVD—chapter markers and compression markers.
    • Chapter markers allow DVD authoring applications to create a navigable chapter list for your exported QuickTime movie. Chapter markers force MPEG keyframes (known as I-frames) at their location, since the DVD specification requires an I-frame at each chapter point.
    • Compression markers identify areas of abrupt change and include two types: those that are automatically inserted by Final Cut Pro at all edit points, and those you manually place in the clip or sequence. Like chapter markers, compression markers force I-frames at their location, although in this case it is for better quality encoding, and they are not used to create a chapter list.
    Note: When you export a QuickTime movie, you have an option to export various kinds of markers, including compression, chapter, or DVD Studio Pro markers. *When you choose to export DVD Studio Pro markers, Final Cut Pro actually exports chapter markers and all compression markers.* This includes compression markers you set manually, as well as ones created automatically by Final Cut Pro at edit and transition points."
    From the Final Cut Pro User Manual.
    So, JS was right the first time

  • The difference between an iphone and an ipod touch?

    i want to know if the difference between an iphone and an ipod touch is just that the iphone is like a phone that has internet and is a phone. or what else is it?

    The iPhone includes the same as an iPod Touch but also includes a phone, a camera, and a GPS radio.
    In addition to having internet access via wi-fi, the iPhone also has internet access via the cellular network, so as long as you have cellular reception with the iPhone, you have access to the internet in addition to having access via an available wi-fi network.

  • The difference between system restore and last good known configuration

    hi,
    what is the difference between system restore  and last good known configuration.
    in which situation you use system restore ,and in which situation you use last good known configuration.
    very short answer wil be enough.
    thanks
    johan
    h.david

    Last Known Good Configuration deals only with Starting Windows eg. a bad registry or incorrect driver is preventing Windows to start.It recovers the registry settings of HKEY_LOCAL_MACHINE\System\CurrentControlSet
    While System Restore uses restore points to return your system files and settings to an earlier point in time without affecting personal files. Restore points are created automatically every week, and just before significant system events, such as the installation
    of a program or device driver. You can also create a restore point manually.You can undone system restore but there is no such option in Last Known Good Configuration.
    Last Known Good Configuration is disabled in Windows 8 or,Windows 8.1 by default.
    Try using Last Known Good Configuration if you can't start Windows, but it started correctly the last time you turned on the computer.
    Try using System Restore to return the system to an earlier point in time when things worked correctly.
    S.Sengupta, Windows Entertainment and Connected Home MVP

  • Difference between sy-datum and any given date

    Dear Friends;
    I have one query  regarding DATE  I wanna calculate the difference between
    SY-DATUM and ANY GIVEN DATE . Is there any function or code available that take one parameter as sy-datum and another parameter as any given date and give result as no. of days between them
    Regards;
    Parag

    DATA: DATEDIFF TYPE P.
    CALL FUNCTION 'SD_DATETIME_DIFFERENCE'
      EXPORTING
        date1                 = '20071122'
        time1                 = '000001'
        date2                 = '20070905'
        time2                 = '000001'
    IMPORTING
       DATEDIFF               = DATEDIFF
    EXCEPTIONS
       INVALID_DATETIME       = 1
       OTHERS                 = 2.
    Greetings,
    Blag.

  • Difference between sy-uline and uline

    Hi All,
    Any one of you please update me what is the difference between sy-uline and uline. Also when i give sy-uline in top-of-page event it gives error.
    Thanks
    sankar

    with ULINE u can specify the position from where the ULINE should start
    corresponds to WRITE AT 3(10) SY-ULINE.
    ULINE AT 3(10) NO-GAP will supress the spacess after the under line
    ex :  1
    uline at 4(10).
    write : / 'My Program'.
    uline at 4(10).
    ex : 2
    write : 'My Program' , sy-uline.

Maybe you are looking for

  • Migrate itunes from pc to mac with multiple user accounts

    I've read the numerous articles on transferring one's itunes library from a windows machine to a mac and I *think* I've got the details sorted (have itunes copy everything and then organize my library, then copy whole folder to external drive). I onl

  • When i click on firefox it loads but then nothing comes up and it doesent work

    When i click on firefox it loads but then nothing comes up and it doesent work

  • Sync problem with iPod Touch

    I downloaded episode #1 of a tv show to my iTouch. Then I purchased the season of the same show, and downloaded it to my imac. This download included Episode #1 again. My iTunes folder correctly shows Episode #1 only once. However, when I sync my iTo

  • BPS issues

    Hi All Some accounts in R3 were not copied in BPS for 2010005roll.pls tell me the steps , how to copy R3 to BPS for particular roll. Regards, Kalim

  • Finding connected BI systems to R/3

    Hi,           I need to write a program which gives the connected BI-systems to R/3 systems. Is there any such function module or service or program or code which returns the required system name & client number of BI. Kindly help me in this regard.