Problem Note 54751: The BETWEEN operator might re-order values, possibly leading to unexpected results in a linguistic-sensitive environment
The BETWEEN operator orders values based on their binary values, so that VAL1 < VAL2. Here is an example:
proc sql;
select * FROM dblib.table
where column between "z" AND "a";
The values are re-ordered so that the WHERE clause becomes this:
where column between "a" AND "z";
This re-ordering might lead to unexpected results when you query a table located in a foreign database, such as DB2, if the strings contain locale-sensitive values.
Click the Hot Fix tab in this note to access the hot fix for this issue.
After you install the hot fix, you might encounter two issues. For more information, see SAS Note 61621: "Performance issues or an ORA-01841 error might occur when querying a DBMS table."
Operating System and Release Information
SAS System | Base SAS | z/OS | 9.3 TS1M2 | 9.4 TS1M3 |
Z64 | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft® Windows® for x64 | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows 8 Enterprise 32-bit | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows 8 Enterprise x64 | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows 8 Pro 32-bit | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows 8 Pro x64 | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows 8.1 Enterprise 32-bit | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows 8.1 Enterprise x64 | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows 8.1 Pro | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows 8.1 Pro 32-bit | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows Server 2008 | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows Server 2008 R2 | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows Server 2008 for x64 | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows Server 2012 Datacenter | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows Server 2012 R2 Datacenter | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows Server 2012 R2 Std | 9.3 TS1M2 | 9.4 TS1M3 |
Microsoft Windows Server 2012 Std | 9.3 TS1M2 | 9.4 TS1M3 |
Windows 7 Enterprise 32 bit | 9.3 TS1M2 | 9.4 TS1M3 |
Windows 7 Enterprise x64 | 9.3 TS1M2 | 9.4 TS1M3 |
Windows 7 Home Premium 32 bit | 9.3 TS1M2 | 9.4 TS1M3 |
Windows 7 Home Premium x64 | 9.3 TS1M2 | 9.4 TS1M3 |
Windows 7 Professional 32 bit | 9.3 TS1M2 | 9.4 TS1M3 |
Windows 7 Professional x64 | 9.3 TS1M2 | 9.4 TS1M3 |
Windows 7 Ultimate 32 bit | 9.3 TS1M2 | 9.4 TS1M3 |
Windows 7 Ultimate x64 | 9.3 TS1M2 | 9.4 TS1M3 |
64-bit Enabled AIX | 9.3 TS1M2 | 9.4 TS1M3 |
64-bit Enabled HP-UX | 9.3 TS1M2 | 9.4 TS1M3 |
64-bit Enabled Solaris | 9.3 TS1M2 | 9.4 TS1M3 |
HP-UX IPF | 9.3 TS1M2 | 9.4 TS1M3 |
Linux | 9.3 TS1M2 | 9.4 TS1M3 |
Linux for x64 | 9.3 TS1M2 | 9.4 TS1M3 |
Solaris for x64 | 9.3 TS1M2 | 9.4 TS1M3 |
*
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.
The BETWEEN operator orders values based on their binary values so that VAL1 < VAL2 in "VAR BETWEEN VAL1 and VAL2". This can lead to unexpected results when operating on data in a foreign database and using the BETWEEN operator with locale sensitive strings.
Type: | Problem Note |
Priority: | high |
Date Modified: | 2015-02-02 10:56:31 |
Date Created: | 2014-12-02 09:52:42 |