Problem Note 63352: Different queries can be passed to the database when you compare a variable to a null value
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
SAS System | Base SAS | z/OS | 9.4 TS1M4 | 9.4 TS1M6 |
z/OS 64-bit | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft® Windows® for x64 | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows 8 Enterprise 32-bit | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows 8 Enterprise x64 | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows 8 Pro 32-bit | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows 8 Pro x64 | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows 8.1 Enterprise 32-bit | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows 8.1 Enterprise x64 | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows 8.1 Pro 32-bit | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows 8.1 Pro x64 | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows 10 | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows Server 2008 | 9.4 TS1M4 | |
Microsoft Windows Server 2008 R2 | 9.4 TS1M4 | |
Microsoft Windows Server 2008 for x64 | 9.4 TS1M4 | |
Microsoft Windows Server 2012 Datacenter | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows Server 2012 R2 Datacenter | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows Server 2012 R2 Std | 9.4 TS1M4 | 9.4 TS1M6 |
Microsoft Windows Server 2012 Std | 9.4 TS1M4 | 9.4 TS1M6 |
Windows 7 Enterprise 32 bit | 9.4 TS1M4 | 9.4 TS1M6 |
Windows 7 Enterprise x64 | 9.4 TS1M4 | 9.4 TS1M6 |
Windows 7 Home Premium 32 bit | 9.4 TS1M4 | 9.4 TS1M6 |
Windows 7 Home Premium x64 | 9.4 TS1M4 | 9.4 TS1M6 |
Windows 7 Professional 32 bit | 9.4 TS1M4 | 9.4 TS1M6 |
Windows 7 Professional x64 | 9.4 TS1M4 | 9.4 TS1M6 |
Windows 7 Ultimate 32 bit | 9.4 TS1M4 | 9.4 TS1M6 |
Windows 7 Ultimate x64 | 9.4 TS1M4 | 9.4 TS1M6 |
64-bit Enabled AIX | 9.4 TS1M4 | 9.4 TS1M6 |
64-bit Enabled Solaris | 9.4 TS1M4 | 9.4 TS1M6 |
HP-UX IPF | 9.4 TS1M4 | 9.4 TS1M6 |
Linux for x64 | 9.4 TS1M4 | 9.4 TS1M6 |
Solaris for x64 | 9.4 TS1M4 | 9.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.
Type: | Problem Note |
Priority: | high |
Date Modified: | 2019-01-03 13:41:34 |
Date Created: | 2018-12-10 12:26:03 |