Domanda

I see strange result when executing this query

update sd_invodt set line_type=iif(is_promo=1, 'campaign', 'item')

The value in line_type field will be "item ". There are whitespaces in value. But when I execute this query

update sd_invodt set line_type='item'

I don't get white spaces.

Now I have to use trim as workaround

update sd_invodt set line_type=trim(iif(is_promo=1, 'campaign', 'item'))

I use latest firebird 2.5. Line_type is a varchar(15).

Is this bug in Firebird?

EDIT

I have tested using new database, and the problem persists.

È stato utile?

Soluzione

The result type of the iif() depends on input and in case of string the result type seems to be char(x) where x is the length of the longest input string. Thus the "item" will be padded with 4 spaces to make it as long as the "campaign" is. I think this is by design but you may want to enter an ticket to the FB issuetracker.

So the iif() return "item " in case of first parameter being false and when you store spaces onto varchar field they are preserved.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top