SUPPORT / SAMPLES & SAS NOTES
 

Support

Problem Note 63352: Different queries can be passed to the database when you compare a variable to a null value

DetailsHotfixAboutRate It

When an SQL query contains a condition similar to WHERE variable = '', a different query can be submitted to a database. The differences occur if the query contains one of the following:

  • DISTINCT keyword
  • ORDER BY clause
  • a join
  • aggregate functions (MIN, MAX, SUM, COUNT, FREQ, AVG, MEAN) or the COALESCE function
  • HAVING clause
  • SET operator other than an OUTER UNION
  • WHERE clause containing a sub-query, referencing a database management system (DBMS) table using the same libref

Below are some examples that illustrate differences in the WHERE clause of the query that is passed to the database:

Example 1

Code Submitted Resulting WHERE Clause That Is Passed to the Database
proc sql;
select * from dblib.test
where x = '';
quit;
WHERE "X" ='' OR "X" IS NULL
proc sql;
select * from dblib.test
where x=''
order by x;
quit;
WHERE TXT_1."X" = ''

 

Example 2

Note: In the first example, a space is added between the quotation marks in the query that is submitted to the database.

Code Submitted Resulting WHERE Clause That Is Passed to the Database
proc sql;
select * from dblib.test
where x in ('','a');
quit;
WHERE  ( ("X"  is  NULL   or  "X"  =  ' '  or  "X" = 'a') )
proc sql;
select * from dblib.test
where x in ('','a')
order by x;
quit;
WHERE  ( ("X"  is  NULL   or  "X"  =  ''  or  "X" = 'a') )

 

Click the Hot Fix tab in this note to access the hot fix for this issue.



Operating System and Release Information

Product FamilyProductSystemSAS Release
ReportedFixed*
SAS SystemBase SASz/OS9.4 TS1M49.4 TS1M6
z/OS 64-bit9.4 TS1M49.4 TS1M6
Microsoft® Windows® for x649.4 TS1M49.4 TS1M6
Microsoft Windows 8 Enterprise 32-bit9.4 TS1M49.4 TS1M6
Microsoft Windows 8 Enterprise x649.4 TS1M49.4 TS1M6
Microsoft Windows 8 Pro 32-bit9.4 TS1M49.4 TS1M6
Microsoft Windows 8 Pro x649.4 TS1M49.4 TS1M6
Microsoft Windows 8.1 Enterprise 32-bit9.4 TS1M49.4 TS1M6
Microsoft Windows 8.1 Enterprise x649.4 TS1M49.4 TS1M6
Microsoft Windows 8.1 Pro 32-bit9.4 TS1M49.4 TS1M6
Microsoft Windows 8.1 Pro x649.4 TS1M49.4 TS1M6
Microsoft Windows 109.4 TS1M49.4 TS1M6
Microsoft Windows Server 20089.4 TS1M4
Microsoft Windows Server 2008 R29.4 TS1M4
Microsoft Windows Server 2008 for x649.4 TS1M4
Microsoft Windows Server 2012 Datacenter9.4 TS1M49.4 TS1M6
Microsoft Windows Server 2012 R2 Datacenter9.4 TS1M49.4 TS1M6
Microsoft Windows Server 2012 R2 Std9.4 TS1M49.4 TS1M6
Microsoft Windows Server 2012 Std9.4 TS1M49.4 TS1M6
Windows 7 Enterprise 32 bit9.4 TS1M49.4 TS1M6
Windows 7 Enterprise x649.4 TS1M49.4 TS1M6
Windows 7 Home Premium 32 bit9.4 TS1M49.4 TS1M6
Windows 7 Home Premium x649.4 TS1M49.4 TS1M6
Windows 7 Professional 32 bit9.4 TS1M49.4 TS1M6
Windows 7 Professional x649.4 TS1M49.4 TS1M6
Windows 7 Ultimate 32 bit9.4 TS1M49.4 TS1M6
Windows 7 Ultimate x649.4 TS1M49.4 TS1M6
64-bit Enabled AIX9.4 TS1M49.4 TS1M6
64-bit Enabled Solaris9.4 TS1M49.4 TS1M6
HP-UX IPF9.4 TS1M49.4 TS1M6
Linux for x649.4 TS1M49.4 TS1M6
Solaris for x649.4 TS1M49.4 TS1M6
* For software releases that are not yet generally available, the Fixed Release is the software release in which the problem is planned to be fixed.