Subject | x00 in char(1) field affecting number of rows returned |
---|---|
Author | Svein Erling Tysvær |
Post date | 2018-09-04T09:27:15Z |
Admittedly, I’ve only tested on Firebird 2.5.2 and 2.5.4 and the particular column used has ISO8859_1 for both CHARACTER SET and COLLATION.
SELECT distinct MyChar1Field
FROM MyTable
GROUP BY 1
returned three rows with what looked like a space, whereas
SELECT distinct MyChar1Field
FROM MyTable
only returned one such row. A bit closer look at the data revealed that one of the entries actually contained hexadecimal 00 and not space. Changing this one value corrected the error, but I’m still puzzled about this difference. Moreover, similar queries behave similarly different:
SELECT distinct MyChar1Field || ‘’
FROM MyTable
GROUP BY 1
returns one row
SELECT MyChar1Field || ‘’
FROM MyTable
GROUP BY 1
returns three rows
SELECT MyChar1Field || ‘ ’
FROM MyTable
GROUP BY 1
returns three rows
SELECT MyChar1Field || ‘ ?’
FROM MyTable
GROUP BY 1
returns one row
It is understandable that x00 is treated differently, but it doesn't make sense to me that it makes other records randomly get into one out of two groups, nor do I understand why DISTINCT/GROUP BY should behave differently.
Is this a known issue, or even fixed in newer Firebird versions? I didn’t see anything in the bug tracker, but I didn’t do any thorough search.
Set