SQL SUBSTRING function indexes strings from 1, but OData substring filtering function indexes from zero. This needs to be taken into account.
Currently a query containing WHERE SUBSTRING(stringkey, 1, 1) = 'x' will return items where the second character is x, but it should return rows where the first character is x.