> On Fri, 02 Mar 2012 09:03:02 +0100, Mark Rotteveel<[email protected]> > wrote: >> On Tue, 28 Feb 2012 07:37:59 -0000, "syn.erpy"<[email protected]> > wrote: >>> Hi, >>> >>> we ran into a little problem regarding blanks. >>> >>> Try the following code (FB 2.5.1): >>> >>> <code> >>> create exception blank 'blank'; >>> >>> SET TERM ^ ; >>> >>> create OR alter procedure p_test >>> as >>> begin >>> >>> IF (' ' = '') THEN >>> exception blank; >>> end >>> ^ >>> >>> SET TERM ; ^ >>> >>> execute procedure p_test; >>> >>> >>> </code> >>> >>> If you run it, the exception is raised. My question is why Firebird >> thinks >>> that a blank (or two or three or four for that matter) is the same as > an >>> empty string. Is this a bug or an intended feature? >> >> Because that is what the SQL standard defines: When comparing strings > the >> shorter string is padded with spaces to the length of the longer string, >> and then they are compared. So if two strings have the same prefix and > the >> rest is a (different) number of spaces, then they are still considered > the >> same. > > I am not 100% sure (and no Firebird installation at hand to check), but I > believe ' ' IS DISTINCT FROM '' should work.
It doesn't. select 1 from rdb$database where '' is distinct from ' ' gives an empty result set. Where as: select 1 from rdb$database where '' is not distinct from ' ' does. Tested with Firebird 2.5.0. -- With regards, Thomas Steinmaurer (^TS^) Firebird Technology Evangelist http://www.upscene.com/ Do you care about the future of Firebird? Join the Firebird Foundation: http://www.firebirdsql.org/en/firebird-foundation/
