Issue with 'null' value in Formulas

Hi all - I have a PDF in which I'm performing various calculations, basic addition and subtraction.  I'm using the following Custom Calculation Script:
this.getField("Amount, Total Revenue Allocated to Maintenance Expenses").value = this.getField("Amount, Endowment Care Fund Income - Schedule H").value + this.getField("Amount, Special Care Fund Income - Schedule H").value + this.getField("Amount, Income from Cemetery Operations").value + this.getField("Amount, Other Sources Please Specify").value;
My issue is that when someone deletes a value in one of the fields (which I guess causes the field to be 'NULL'), the calcualtion doesn't work....so in other words if I have the following:
Field 1:  10
Field 2:  20
Field 3:  30
Field 4:  40
When adding this should result in 100.....however if one were to delete the value in field 2, my calcualtion then produces 103,040....the formula doesn't know how to process the NULL value of course, so it concatenates the numbers.
How do I get around this?  Do I need more JavaScript, and if so is there a good example somewhere on how to code it?
Thanks, Steve

leahfst,
If these dates are complementary (as in 'either date1 either date2 has a value) you could transform the dates to text, merge these two fields (one being empty) and convert the result back to a date:
Date(ToText({CnFGf_1.CnFGf_1_Date}) & ToText({CnFGf_2.CnFGf_2_Date}))
If these dates can both have a value (or not), it is helpful to know a null-value for dates is equal to Date(0000,00,00). In this situation, there can be the following situations:
1. Both dates are empty. Your result will obviously be an empty date.
2. {CnFGf_1.CnFGf_1_Date} has a value, {CnFGf_2.CnFGf_2_Date} is empty.
3. {CnFGf_1.CnFGf_1_Date} is empty, {CnFGf_2.CnFGf_2_Date} has a value.
4. Both dates have a value. You will have to choose which date should be used.
For any of these four situations, you can check the date to have a value using:
IF {CnFGf_1.CnFGf_1_Date} = Date(0000,00,00)
and so on..

Similar Messages

  • Need help with NULL values in Crosstables

    Hello everybody,
    I need some help with NULL values and crosstables. My issue is the following:
    I have a query (BW - MDX-Query) that gives me turnover measures for each month. In Crystal Reports I choose crosstable to display this whereby I put all month in columns and all turnover-measures in rows. Each month that has a value (measures are not empty) is chown in the crosstables rows. So far so good. The problem occures when there are month that actually have no values (measures are empty). In that case these months are not chown in columns. But I need CR to display these columns and show the value 0. How can I do that?

    Hi Frank,
    Cross tab shows the data based on your column and these column fields are grouped and based on the group it will show your summaries. 
    If there is no data for any of your group it will not display that group.  In this case you will have to create a standard report which should look like cross tab and to get zero values you need to write formulas .
    Example if you want to display Moth wise sales :
    if Month() = 01 Then
    sum() else 0
    Now this formula will check if your month is Jan, then it will sum up the values else it will display zero value. 
    This is possible only through standard report not with Cross Tab.
    Thanks,
    Sastry

  • How to create a dimension object in SAP BW Unv with Null value

    Hello,
    for query syncronisation task, I need a dimension object in my BW universe with NULL value. Does someone know, how to do it or if its possible?
    Regards,
    Thilo

    Hi Thilo,
    so the only common item is Material then - correct ?
    Query 1                                                                                Query 2
    Formulation (grouping of materials)                                                  (No counterpart)
    Material                                                                                Material
    dummy key figure (why?)                                                                Company Code
                                                                                    10 Keyfigure
    Is this something you regular have to do ? what about a MultiProvider ?
    did you try "merged dimensions" in the Web Intelligence Report ?
    Ingo

  • JDBC MS Access--- cannot extract entry with null value with data type Meta

    I'm trying to extract a data entry with null value by using JDBC. The database is MS Access.
    The question is how to extract null entry with data type memo? The following code works when the label has data type Text, but it throws sqlException when the data type is memo.
    Any advice will be appreciated! thanks!
    Following are the table description and JDBC code:
    test table has the following attributes:
    Field name Data Type
    name Text
    label Memo
    table contents:
    name label
    me null
    you gates
    Code:
    String query = "SELECT name, label FROM test where name like 'me' ";
    ResultSet rs = stmt.executeQuery(query);
    while (rs.next())
    String name = rs.getString("name");
    rs.getString("val");
    String label = rs.getString("label");
    System.out.println("\t"+name+"\t"+label);
    catch (SQLException ex)
    System.out.println(ex.getSQLState());
    System.out.println(ex.getErrorCode());
    System.out.println("in sqlexception");
    output:
    C:\Temp\SEFormExtractor>java DBTest
    yet SELECT name, label FROM test
    null
    0
    in sqlexception

    The question is how to extract null entry with data type memo?Okay, what you need to do is this:
    if (rs.getString("val") == null)
      // do something
    }This way, when it's a null value, you can check it first, and then handle it how you want, rather than getting an exception.

  • Sql query slowness due to rank and columns with null values:

        
    Sql query slowness due to rank and columns with null values:
    I have the following table in database with around 10 millions records:
    Declaration:
    create table PropertyOwners (
    [Key] int not null primary key,
    PropertyKey int not null,    
    BoughtDate DateTime,    
    OwnerKey int null,    
    GroupKey int null   
    go
    [Key] is primary key and combination of PropertyKey, BoughtDate, OwnerKey and GroupKey is unique.
    With the following index:
    CREATE NONCLUSTERED INDEX [IX_PropertyOwners] ON [dbo].[PropertyOwners]    
    [PropertyKey] ASC,   
    [BoughtDate] DESC,   
    [OwnerKey] DESC,   
    [GroupKey] DESC   
    go
    Description of the case:
    For single BoughtDate one property can belong to multiple owners or single group, for single record there can either be OwnerKey or GroupKey but not both so one of them will be null for each record. I am trying to retrieve the data from the table using
    following query for the OwnerKey. If there are same property rows for owners and group at the same time than the rows having OwnerKey with be preferred, that is why I am using "OwnerKey desc" in Rank function.
    declare @ownerKey int = 40000   
    select PropertyKey, BoughtDate, OwnerKey, GroupKey   
    from (    
    select PropertyKey, BoughtDate, OwnerKey, GroupKey,       
    RANK() over (partition by PropertyKey order by BoughtDate desc, OwnerKey desc, GroupKey desc) as [Rank]   
    from PropertyOwners   
    ) as result   
    where result.[Rank]=1 and result.[OwnerKey]=@ownerKey
    It is taking 2-3 seconds to get the records which is too slow, similar time it is taking as I try to get the records using the GroupKey. But when I tried to get the records for the PropertyKey with the same query, it is executing in 10 milliseconds.
    May be the slowness is due to as OwnerKey/GroupKey in the table  can be null and sql server in unable to index it. I have also tried to use the Indexed view to pre ranked them but I can't use it in my query as Rank function is not supported in indexed
    view.
    Please note this table is updated once a day and using Sql Server 2008 R2. Any help will be greatly appreciated.

    create table #result (PropertyKey int not null, BoughtDate datetime, OwnerKey int null, GroupKey int null, [Rank] int not null)Create index idx ON #result(OwnerKey ,rnk)
    insert into #result(PropertyKey, BoughtDate, OwnerKey, GroupKey, [Rank])
    select PropertyKey, BoughtDate, OwnerKey, GroupKey,
    RANK() over (partition by PropertyKey order by BoughtDate desc, OwnerKey desc, GroupKey desc) as [Rank]
    from PropertyOwners
    go
    declare @ownerKey int = 1
    select PropertyKey, BoughtDate, OwnerKey, GroupKey
    from #result as result
    where result.[Rank]=1
    and result.[OwnerKey]=@ownerKey
    go
    Best Regards,Uri Dimant SQL Server MVP,
    http://sqlblog.com/blogs/uri_dimant/
    MS SQL optimization: MS SQL Development and Optimization
    MS SQL Consulting:
    Large scale of database and data cleansing
    Remote DBA Services:
    Improves MS SQL Database Performance
    SQL Server Integration Services:
    Business Intelligence

  • JDBC Receiver Adapter with Null Value

    HI,
    I have configured ID for JDBC Receiver. In my communication channel, I already check Integration of Empty String Values = Null Value. However, when I check the result from audit log, it still shows that SAP XI sends the null value to database. In my understanding, it should not send the field which has null value (It shouldn't be included in sql statement).
    I check this with other scenario. With the same check at Integration of Empty String Values = Null Value, it doesn't send null value to database. It happens only with my first scenario.
    Have anyone ever been through this before? Any suggestion please?
    Thanks,
    Pavin

    Hi,
    1. The occurrence is 0...1
    2. This is the first result with null value (Please see field Error)
    UPDATE EXPCRM_T_CustomerProfile SET RequestID=455, RecordNo=1, SAPCustomerCode=0001000344, Error=NULL, Status=2, UpdateDateTime=12/03/2008 13:45:03 WHERE (RequestID=455 AND RecordNo=1)
    Then, I change the option from Null Value to Empty string. This is the result.
    UPDATE EXPCRM_T_CustomerProfile SET RequestID=455, RecordNo=1, SAPCustomerCode=0001000344, Error=', Status=2, UpdateDateTime=12/03/2008 13:46:12 WHERE (RequestID=455 AND RecordNo=1)
    Field Error Change from NULL to '
    The expected result from me is that field Error should not exist at all. Please help.
    Thanks,
    Pavin

  • bc4juix:StyledText doesn't work with null values?

    Hi , anyone knows why the <bc4juix:StyledText> tag doesn't work with null values?
    For example when datasource does not give back data...
    Thanks
    Guillermo

    Which version of Jdev are you using? What are the results you are getting?

  • Range interval partitioning with null value

    Hello,
    I have question, how can I create table with partition and after that I will insert null value in the partition key like this kind of
    range interval partitioning with null value.
    I have Oracle 11g.
    Thanks
    Mohammed

    user13777053 wrote:
    Thank you, but my question is about range interval not for range?http://docs.oracle.com/cd/E11882_01/server.112/e25523/partition.htm#VLDBG00220
    A MAXVALUE literal can be defined for the highest partition. MAXVALUE represents a virtual infinite value that sorts higher than any other possible value for the partitioning key, *including the NULL value.*
    So since you're trying to partition by interval (which doesn't support a MAXVALUE clause) you're out of luck.
    There's probably fancy hacks and what not you could try to implement, but i'm not about to recommend any of those here :)
    Cheers,

  • To overcome column with null value-urgent

    hai all,
    when i query i get column with null value.
    how to solve it?
    thank in advance.
    rcs
    SQL> DESC SCOTT.CB1;
    Name Null? Type
    ID NUMBER
    SUPCODE NUMBER
    SUPLNAME VARCHAR2(100)
    NAME VARCHAR2(100)
    ITEMCODE VARCHAR2(10)
    RECDOC NUMBER
    RECDATE VARCHAR2(10)
    TOTVALUE NUMBER
    QTY NUMBER
    CB_IPNO NUMBER
    CB_VNNO NUMBER
    CB_VDT VARCHAR2(10)
    CB_AMT NUMBER
    RECDOC_GR VARCHAR2(30)
    RECDATE_GR DATE
    SUPCODE_GR VARCHAR2(10)
    TABLE LOOK LIKE THIS (NOT ALL DATA IN SAME ROW, BECUSE I INSERTED LAST 3 COLUMN VALUES):
    ID     SUPCODE     SUPLNAME     NAME     ITEMCODE     RECDOC     RECDATE     TOTVALUE     QTY     CB_IPNO     CB_VNNO     CB_VDT     CB_AMT     RECDOC_GR     RECDATE_GR     SUPCODE_GR
    2015               AAAA                04117     9083          10545.6     78                                   
    2016               BBBB                    04609     9087          25200     3600                                   
    2017               GGGG                    04609     9088          28175     4025                                   
    2018                                   36591371.64     2565017.27                                   
                                                                     00001/07-08     02/04/2007     14020362
                                                                     00002/07-08     02/04/2007     14020362
                                                                     00003/07-08     02/04/2007     14010254
                                                                     00004/07-08     02/04/2007     14010254
                                                                     00005/07-08     02/04/2007     14021458
    SQL> SELECT DISTINCT ID, SUPCODE_GR, NAME, ITEMCODE, RECDOC, RECDATE_GR, TOTVALUE, QTY FROM SCOTT.CB
    1;
    ID SUPCODE_GR
    NAME
    ITEMCODE RECDOC RECDATE_G TOTVALUE QTY
    1
    PRO.AT.ALU.POWDER UNCOATED
    04609 15 51975 7425
    2
    PEN, GEL PEN
    07969 17 154 11
    ID SUPCODE_GR
    I NEED RESULT AS FOLLOWS (ALL RESPECTIVE DDATA IN ONE LINE NOW NOT LIKE THAT):
    ID     SUPCODE     SUPLNAME     NAME     ITEMCODE     RECDOC     RECDATE     TOTVALUE     QTY     CB_IPNO     CB_VNNO     CB_VDT     CB_AMT     RECDOC_GR     RECDATE_GR     SUPCODE_GR
    2015               AAAA                04117     9083          10545.6     78                         00001/07-08     02/04/2007     14020362                              
    ============

    Even accounting for the formatting, I'm not sure I even understand the question. It could be any number of different problems or non-problems.

  • Pro*C & SQLDA with NULL value for predicate column

    Hi: I am using a C program to update a table via a dynamic sql (method 4) and SQLDA. In the update statement predicate, I have place holders (as in TBLCOL=:C000). One of the columns in the predicate contains null values, so I set L[n] = 0, V[n] = pData (which pData[0] = '\0'), *(I[n]) = -1, and T[n] = 5 (for text). I cannot find the row that I know is there.
    I cannot change my statement to contain TBLCOL IS NULL, since I don't know ahead of time if I'm looking for rows with null values for this column. The Pro*C manual says that by setting the appropriate *(I[n]) = -1, it indicates to Oracle to simulate the "IS NULL" clause, and update the appropriate rows. In my case, I receive 1403 as SQLCODE when I use TBLCOL=:C000 vs TBLCOL IS NULL. What am I doing wrong? Thank you for your help.

    You should include these columns as well;
    ChangeType (see mxi_changetype)
    ValOwner (repository)
    UserID ("jobid=<>", usermskey, GUI (mmc), DG (dyngrp), reconcile)
    IdAudit  (This is the event task (add and del member for assignments)
    ParentAuditId (AuditID of parent which last updated the attribute, not consistent)
    ChangedBy (Holds the MSKEY of the user which last changed the attribute)
    ExpiryTime
    to make sure you get a fuller picture of the audit record.
    Your selection does not cover all events and descriptions
    br,
    Chris

  • How to take the Average of a DATEDIFF column with NULL values?

    I am building an SSRS report that can display the average of a calculated datediff column in dd/hh/mm format with the following formula:
    =Avg(IIF(Fields!LastCorrectedDate.Value is nothing,0, DATEDIFF("n",cdate(Fields!LastCorrectedDate.Value),cdate(Fields!
    LastSignDate.Value)) \(60*24) & ":" & DATEDIFF("n",cdate(Fields!LastCorrectedDate.Value),cdate(Fields!
    LastSignDate.Value)) mod (60*24)\60  & ":" & DATEDIFF("n",cdate(Fields!LastCorrectedDate.Value),cdate(Fields!
    LastSignDate.Value)) mod (60*24) - (((DATEDIFF("n",cdate(Fields!LastCorrectedDate.Value),cdate(Fields!
    LastSignDate.Value)) mod (60*24))\60)*60) ))
    SSRS does not raise any errors with the formula and I have used the same formula for other columns without issue. I have noticed that this column includes null values which I think may be the problem. When the reports runs, it returns #ERROR on the column
    but does not give a reason why.  I am using SSRS report builder with visual basic logic as opposed to embedding SQL. Any help or feedback would be greatly appreciated.

    Hi No Ragrets,
    According to your description, you want to calculate the average for the date time difference. Right?
    In Reporting Services, Avg() function is only available for numeric values. In this scenario, the DateDiff() function to calculate the minutes difference will return a number. So we can do average calculation based on the return values first. Then we format
    it as a time. We have tested this case in our local environment. Please try the following expression:
    =floor(avg(DateDiff("n",Fields!StartDate.Value,Fields!EndDate.Value))) \(24*60) &":"&
    floor(avg(DateDiff("n",Fields!StartDate.Value,Fields!EndDate.Value))/60 mod 24 )&":"&
    floor(avg(DateDiff("n",Fields!StartDate.Value,Fields!EndDate.Value))) mod 60
    The result looks like below:
    If you have any question, please feel free to ask.
    Best Regards,
    Simon Hou

  • User Created in OIM 11.1.1.5 with null value for mandatory field.

    Hi,
    We had updated one UDF as mandatory field on OIM user form. We can see the * in front of that field. Now if we create the user using web console (Using UI), we are not able to create the user without giving some value in that UDF as it is mandatory. However if we created the user with UDF value as null using Trusted recon, User sucessfully created in OIM. I had attached the screen shot for that user which create in OIM with UDF value as null.
    Is any thing else also need to do to make UDF as mandatory field.
    Regards,
    Sid

    I am not sure this is a bug. Such mandatory checks will often only apply to administrative changes from the GUI. You may not always be able to enforce the same quality of data in reconciled data as you wish to impose for changes made through OIM, and it may prove an issue in some cases if such users could not be reconciled. In this case the use will go into OIM, but you will be forced to populate a value in the mandatory field if you later try to update them in OIM.

  • Issue with Negative Value for Total valuated stock 0VALSTCKQTY.

    Hi Experts,
    we loaded the Cube with datasources 2LIS_03_BX, 2LIS_03_BF and 2LIS_03_UM.
    We mapped the quanity field from 2LIS_03_BF in transformation either into Key figures "Quantity issued from valuated stock" (0ISSVALSTCK) or "Quantity received into valuated stock" (0RECVALSTCK ) of the cube.
    For obtaining the Total Valuated stock, we used the Key figure 0VALSTCKQTY. This key figure is having the Inflow and Out flow values as 0RECVALSTCK and 0ISSVALSTCK. When i tried to check the content of 0VALSTCKQTY, the key figure  0VALSTCKQTY is not present in the infoCube content. I understood that the value for this key figure would be calculated at the time of query execution with the formula
    { Last obtained Valuated stock + (Received Valuated Stock u2013 Issued Valuated Stock ) }.
    The issue is the first records in the query is obtained with negative value for the total valuated stock 0VALSTCKQTY even though the values of Received Valuated Stock  and  Issued Valuated Stock are with Zero.  Could any one please help me on how the first record in the query is with a negative value eventhough the inflow and out flow fields of it are with Zero.
    Many Thanks in advance.
    Jeswanth

    Hi Srini,
    I observed an interresting reason for the stock being with negative in the first record.
    Issue : While executing the BEx report, we have the first record with a negative value.
    Let me explain with an example
    Material  : XYZ
    Plant      : A
    Date of Stock Initialization for data source 2LIS_03_BX -
    >  12th April 2009.
    So on 12 Th April 2009 consider that we have a stock in store with a value of 2640.
    Then we have loaded wih Data source 2LIS_03_BF for all Historic Movement types.
    At the time of query execution we will have the first record with a negative of available stock present on the day of initialization .
    So, as we have initilized the data source 2LIS_03_BX on 12 th April 2009, we have at that time a stock of 2640 in availability.
    Exactly with the same value of 2640, we are having a negative value i.e. -2640.
    and also one more point to be noted is ...as we have initialized the data source 2LIS_03_BX on 12 th APril 2009...it has created a
    opening balance of 2640 on the day of initiailization i.e on 12 th April 2009 in infocube....(which is an extra record...)...so if the previous record of 12,04,2009 is having some value in it..then it will get added to 2640 EA..which will give incorrect stock
    So in the query the records will appear in the below following manner
    Calendar Day     Total stock                                                                Received stock                                          Issued Stock         
    28.12.2005 --->  - 2640 EA
    29.12.2005 --->    2000 EA                                                                       640 EA                                                        0
    10.04.2009 --->      0                                                                                0                                                               2000 EA      
    11.04.2009 -
    >    0                                                                                0                                                                0          
                                 (For making
                                  the earlier record of  initilization to 0  a negative value -2640 EA is created in the first record )
    12.04.2009 (Initializtion day) --->  2640 EA                                                 0                                                                0
    13.04.2009 
    the day before initialization the total stock will be 0 due to the negative effect introduced by the first record and from the day of initialization the records will be the accurate values...  On 12 th april 2009 we can see that a stock of 2640 is brought into the total stock. In fact if there is no negative value i.e. -2640 in the first record then ...the value on 11.04.2009 will be 2640 Ea and this will get summed up with the Opening balance of 2640 EA created by 2LIS_03_BX on the day of intitialization. So on 12 .04. 2009 the total stock will be shown as 5280 EA...so in order to prevent the double value only we observed that the first record is created with the negative of available stock present on the initialization ...to make the record before the day of initialization i.e. 11.04.2009...to be 0...so that from 12 th April 2009 ..will start to see the actual total stock in the query result...
    This is happening only if we use  both the data sources 2LIS_03_BX and 2LIS_03_BF  for loading into BW.....
    If we load alone by 2LIS_03_BF ...then as 2LIS_03_BX is ruled out in the loading...then no negative of available stock will be created ...because there will be bno opening balance created on the day of initialization.....and the opeing balance available will be flowing into consecutive records due to the movement types and 12 th April 2009 will be shown with avaialable total stock of 2640 EA.
    Kindly let us know your opinions on this...
    Thanks.
    regards,
    Jeswanth

  • Oracle 11g decode issue with null

    Hi,
    we want to migrate from Oracle 10g to Oracle 11g and have an issue with decode.
    The database has the following character set settings:
    NLS_CHARACTERSET = AL32UTF8 in Oracle 11g and UTF8 in Oracle 10g
    NLS_NCHAR_CHARACTERSET = AL16UTF16
    If I try a select with decode which has null as first result argument I will get a wrong value.
    select decode(id, null, null, name) from tab1;
    ("name" is a NVARCHAR2 field. Table tab1 has only one entry and "id" is not null.)
    This select returns a value with characters which are splitted by 0 bytes.
    In Oracle 10g the value without 0 bytes is delivered.
    If I suround the decode with dump I get following results:
    select dump(decode(id, null, null, name), 1016) from tab1;
    Oracle 10g: Typ=1 Len=6 CharacterSet=AL32UTF8: 4d,61,72,74,69,6e
    Oracle 11g: Typ=1 Len=12 CharacterSet=US7ASCII: 0,4d,0,61,0,72,0,74,0,69,0,6e
    NLS_LANG has no effect on the character set of 'null' in Oracle 11g.
    Non null literals work:
    select dump(decode(id, null, 'T', name), 1016) from tab1;
    Oracle 10g: Typ=1 Len=6 CharacterSet=UTF8: 4d,61,72,74,69,6e
    Oracle 11g: Typ=1 Len=6 CharacterSet=AL32UTF8: 4d,61,72,74,69,6e
    select dump(decode(id, null, N'T', name), 1016) from tab1;
    Oracle 10g: Typ=1 Len=12 CharacterSet=AL16UTF16: 0,4d,0,61,0,72,0,74,0,69,0,6e
    Oracle 11g: Typ=1 Len=12 CharacterSet=AL16UTF16: 0,4d,0,61,0,72,0,74,0,69,0,6e
    Here the scripts for creating the table and the entry:
    create table tab1 (
    id NUMBER(3),
    name NVARCHAR2(10)
    insert into tab1 (id, name) values (1, N'Martin');
    commit;
    Is it possible to change the character set?
    Could you please help me?
    Regards
    Martin

    This doesn't have the problem.looks this doesn't solve the problem (of returning a value with characters which are splitted by 0 bytes):
    SQL> select * from v$version where rownum = 1
    BANNER                                                                         
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production         
    1 row selected.
    SQL> select dump(decode(id, null, null, name), 1016) from tab1
    union all
    select dump(case id when null then null else name end, 1016) cs from tab1
    DUMP(DECODE(ID,NULL,NULL,NAME),1016)                                           
    Typ=1 Len=12 CharacterSet=US7ASCII: 0,4d,0,61,0,72,0,74,0,69,0,6e              
    Typ=1 Len=12 CharacterSet=AL16UTF16: 0,4d,0,61,0,72,0,74,0,69,0,6e             
    2 rows selected.You need to explicitly convert the third parameter to char:
    SQL> select dump(decode(id, null, to_char(null), name), 1016) from tab1
    DUMP(DECODE(ID,NULL,TO_CHAR(NULL),NAME),1016)                                  
    Typ=1 Len=6 CharacterSet=WE8MSWIN1252: 4d,61,72,74,69,6e                       
    1 row selected.

  • REGEXP_SUBSTR for comma delimited list with null values

    Hi,
    I have a column which stores a comma delimited list of values. Some of these values in the list may be null. I'm having some issues trying to extract the values using the REGEXP_SUBSTR function when null values are present. Here are two things that I've tried:
    SELECT
       REGEXP_SUBSTR (val, '[^,]*', 1, 1) pos1
      ,REGEXP_SUBSTR (val, '[^,]*', 1, 2) pos2
      ,REGEXP_SUBSTR (val, '[^,]*', 1, 3) pos3
      ,REGEXP_SUBSTR (val, '[^,]*', 1, 4) pos4
      ,REGEXP_SUBSTR (val, '[^,]*', 1, 5) pos5
    FROM (SELECT 'AAA,BBB,,DDD,,FFF' val FROM dual);
    POS P POS P P
    AAA   BBB
    SELECT
       REGEXP_SUBSTR (val, '[^,]+', 1, 1) pos1
      ,REGEXP_SUBSTR (val, '[^,]+', 1, 2) pos2
      ,REGEXP_SUBSTR (val, '[^,]+', 1, 3) pos3
      ,REGEXP_SUBSTR (val, '[^,]+', 1, 4) pos4
      ,REGEXP_SUBSTR (val, '[^,]+', 1, 5) pos5
    FROM (SELECT 'AAA,BBB,,DDD,,FFF' val FROM dual);
    POS POS POS POS P
    AAA BBB DDD FFFAs you can see neither of the calls works correctly. Does anyone know how to modify the regular expression pattern to handle null values? I've tried various other patterns but was unable to get anyone to work for all cases.
    Thanks,
    Martin
    http://www.ClariFit.com
    http://www.TalkApex.com

    Hi, Martin,
    This does what you want:
    SELECT
       RTRIM (REGEXP_SUBSTR (val, '[^,]*,', 1, 1), ',') pos1
      ,RTRIM (REGEXP_SUBSTR (val, '[^,]*,', 1, 2), ',') pos2
      ,RTRIM (REGEXP_SUBSTR (val, '[^,]*,', 1, 3), ',') pos3
      ,RTRIM (REGEXP_SUBSTR (val, '[^,]*,', 1, 4), ',') pos4
      ,RTRIM (REGEXP_SUBSTR (val || ','
                          , '[^,]*,', 1, 5), ',') pos5
    FROM (SELECT 'AAA,BBB,,DDD,,FFF' val FROM dual);The query above works in Oracle 10 or 11, but in Oracle 11, you can also do it with just REGEXP_SUBSTR, without using RTRIM:
    SELECT
       REGEXP_SUBSTR (val, '([^,]*),|$', 1, 1, NULL, 1) pos1
      ,REGEXP_SUBSTR (val, '([^,]*),|$', 1, 2, NULL, 1) pos2
      ,REGEXP_SUBSTR (val, '([^,]*),|$', 1, 3, NULL, 1) pos3
      ,REGEXP_SUBSTR (val, '([^,]*),|$', 1, 4, NULL, 1) pos4
      ,REGEXP_SUBSTR (val, '([^,]*),|$', 1, 5, NULL, 1) pos5
    FROM (SELECT 'AAA,BBB,,DDD,,FFF' val FROM dual);The problem with your first query was that it was looking for sub-strings of 0 or more non-commas. There was such as sub-string. consisting of 3 characters, starting at position 1, so it returned 'AAA', as expected. Then there was another sub-string, of 0 characters, starting at position 4, so it returned NULL. Then there was a sub-string of 3 characters starting at position 5, so it returned 'BBB'.
    The problem with your 2nd query was that it was looking for 1 or more non-commas. 'DDD' is the 3rd such sub-string.
    Edited by: Frank Kulash on Feb 16, 2012 11:36 AM
    Added Oracle 11 example

Maybe you are looking for

  • Problem with Sequence in ADF

    Hi, I have a sequece for a table value. I have the following code to retrieve the sequence value. protected void create(AttributeList attributeList) { ApplicationModule am = getDBTransaction().getRootApplicationModule(); DBSequence dS = new DBSequenc

  • Creating tmp files on unix servers root while reading from MQ?

    Hi All, I have developed a interface in ODI for extracting messages from MQ and loading into oracle tables. recently i have observed that ,some temp file are creating with names start with "jms*" on my servers root directory (i.e /tmp). not getting a

  • Ipod stopped working since downloading itunes 7

    Hi all, Downloaded itunes 7 and my ipod has stopped working. every time i connect the ipod it crashes my laptop. sometimes the laptop recovers so i restore the ipod but the music keeps skiping etc. ipod does make some strange sounds when running. has

  • Full Hard Drive...Already?

    55 of my 60GB hard drive is full. My Itunes used 100mb, Iphoto 500mb and Imovie 80mb. These are the only apllications I have stored data in. What is taking up the other 90% of my HD capacity? How do I find out? Thanks, JT macbook   Mac OS X (10.4.7)

  • Scroll wheel not working in Stickies

    I have a Mighty mouse and the scroll wheel does not work in stickies. My old mouse was a MacAlly and the scroll wheel worked in stickies. I have a few stickies that contain a lot of info that I refer to often. I go to the particular stickyand like to