Showing posts with label General. Show all posts
Showing posts with label General. Show all posts

Sunday, September 29, 2013

Oracle SQL - NULL Values and Zero Strings

Following ANSI SQL 1992 standard empty or zero lenght strings and NULL are different. So I was a little bit surprised after executing the following queries on an Oracle 11R2 database last days:

a) As a Result:
select length(null) from dual; -- NULL as expected
select length('') from dual;     -- NULL too, what was a bit unexpected
select length(' ') from dual;    -- 1 as expected

 b) In a Comparison:
select dummy from dual where '' = '';         -- Instead of 'X' no result, comparison failed
select dummy from dual where '' = NULL;  -- Same as above, not a real surprise
select dummy from dual where '' IS NULL; -- The expected result 'X'


Searching at "Ask Tom" I found the following statement:

and we said...
A zero length varchar is treated as NULL.
'' is not treated as NULL.
'' when assigned to a char(1) becomes ' ' (char types are blank padded strings).
 '' when assigned to a varchar2(1) becomes '' which is a zero length string and a zero length string is NULL in Oracle (it is no long '')


In the Oracle SQL Language Reference I found in addition the following comment regarding the difference of VARCHAR and VARCHAR2:

VARCHAR Datatype
Do not use the VARCHAR datatype. Use the VARCHAR2 datatype instead. Although the VARCHAR datatype is currently synonymous with VARCHAR2, the VARCHAR datatype is scheduled to be redefined as a separate datatype used for variable-length character strings compared with different comparison semantics.


So what does that all mean from a practical point of view:

  1. Oracle does not handle null values for VARCHAR ANSI SQL 92 conform as the empty string is converted to a null value.
  2. Always use VARCHAR2 out of compatibility reasons as for VARCHAR Oracle has reserved the right to change the comparison semantics at a later stage to become ANSI SQL 92 compatible.
  3. For all CHAR types due to padding for '' everything is padded with spaces.
  4. The behaviour of empty or zerlo length Strings described is the same in all Oracle releases.


This behaviour could become important when we think about query design for Database Optimization and Tuning. Enjoy & experiment on your own!

Saturday, February 4, 2012

QueryAdvisor now for Mac OSX available too!

QueryAdvisor is now available as a real 64Bit app on Mac OSX. The final changes has been made and everything has been bundled and packed ready for rollout!

The most time consuming process had been the changes to get the real Mac feeling. Accelerators had been added. All Popups are working. The Dock and the Menu Bar behave as it should be for real Mac software.

If you own an Intel based Mac with Snow Leopard or Lion installed, why not be part of the test team and work with QueryAdvisor for free? Just let me know. If you know a DBA with an Intel based Mac - just let him know.

A free copy of our new Mac OSX release QueryAdvisor is waiting for You! Just drop me a line and I will send you a link for downloading.

Saturday, July 2, 2011

Support QueryAdvisor on Google PlusOne!

The new Google PlusOne button is now available on all content related pages of our QueryAdvisor site. The button is placed on most pages in the right column below the twitter and the other social bookmarking icons.

If you like what we are doing, why not supporting us with a CLICK on one of the Google PlusOne buttons on our QueryAdvisor site?

This will help us to detect the areas you are interested in and - yes - will help us in promoting our site a bit.

Thanks in advance thinking about supporting us!

Sunday, May 8, 2011

Registration for QueryAdvisor Betatest started!

We are starting our official public betatest of QueryAdvisor now. Our target audience are Oracle database administrators independent from the releases they have worked with and the level of individual experience.

If you like to apply for becoming an official betatester with all benefits involved you will find additional information here.

The betatest will start with our new QueryAdvisor V2.90 release offering amazing new functionality in dealing with hugh amounts of Oracle event 10046 tracefiles.

Don't miss this opportunity and learn more here now!

Sunday, April 17, 2011

New QueryAdvisor V2.90 Release End of April!

The new QueryAdvisor V2.90 release will be online end of April. Right now there are the final tests on bulk processing of Oracle trace files runnning.

This release should be the foundation of the overdue betatest. The new 360° views across all processed Oracle event 10046 trcfiles are available there for the first time. I think that crossreferencing all tracefiles and open cursors is a great feature and it was worth waiting!

Before I forget to mention: All licensekeys remain valid! An upgrade to QueryAdvisor V2.90 will therefor be straight forward:
1) Download the new QueryAdvisor release.
2) Deinstall the old installed software. Modified/New data is left untouched!
3) Install the current release of QueryAdvisor. Copy your own data to the same direcory.
4) During the start the used parameterfile will be updated on the fly but only stored after confirmation.

And VoilĂ ... Upgrade completed!

There will be a Tweet with a download link provided when our tests had been completed!

Sunday, January 16, 2011

QueryAdvisor now on Blogspot.com!

We have now our own blog at QueryAdvisor.blogspot.com. We will inform you there about new features and ideas. Your comments are highly welcomed! Come & See...