Subject | Re: [firebird-support] syntax for select case ... |
---|---|
Author | Thomas Beckmann |
Post date | 2014-04-04T18:21:13Z |
Hi James,
your query has to look like
select <something> from <relation>
Your example queries look like
select <something>
Taking your first example, you may write
SELECT
case RDB$RELATION_NAME
when 'SCHEMA_VERSION' then 1
else 0
end
FROM RDB$RELATIONS
to achieve the second.
I'd write
SELECT
ii(RDB$RELATION_NAME = 'SCHEMA_VERSION', 1, 0)
FROM RDB$RELATIONS
but this is identical in respect of performance.
Am 04.04.2014 15:30, schrieb James Schumacher:
Mit freundlichen Grüßen,
Thomas Beckmann
Diplom-Informatiker
Wielandstraße 14c • 23558 Lübeck
Tel +49 (22 25) 91 34 - 545 • Fax +49 (22 25) 91 34 - 604
Mail thomas.beckmann@... <mailto:thomas.beckmann@...>
ASSFINET-Logo
*ASSFINET Dienstleistungs-GmbH*
Max-Planck-Straße 14 • 53501 Grafschaft bei Bonn
info@... <mailto:info@...> • www.assfinet.de
<http://www.assfinet.de/>
Geschäftsführer: Dipl. Wirtschaftsinformatiker Marc Rindermann
Registergericht Koblenz HRB 23331
Diese E-Mail enthält vertrauliche Informationen. Wenn Sie nicht der
richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben,
informieren Sie bitte sofort den Absender und vernichten Sie diese Mail.
Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist
nicht gestattet.
your query has to look like
select <something> from <relation>
Your example queries look like
select <something>
Taking your first example, you may write
SELECT
case RDB$RELATION_NAME
when 'SCHEMA_VERSION' then 1
else 0
end
FROM RDB$RELATIONS
to achieve the second.
I'd write
SELECT
ii(RDB$RELATION_NAME = 'SCHEMA_VERSION', 1, 0)
FROM RDB$RELATIONS
but this is identical in respect of performance.
Am 04.04.2014 15:30, schrieb James Schumacher:
>--
>
> Hello,
>
> I am new to Firebird, I have experience using MS SQL. I am trying to
> convert some code that performs various checks but having problems with
> the syntax. One thing I need to convert is SQL to detect whether a
> table exists.
>
> I have tried these in Squirrel and isql connected to an embedded db
> version Firebird 2.5
>
> I tried the following
>
> SELECT RDB$RELATION_NAME FROM RDB$RELATIONS
> WHERE RDB$RELATION_NAME = 'SCHEMA_VERSION'
>
> works fine. I went on to:
>
> select case when exists(SELECT RDB$RELATION_NAME FROM RDB$RELATIONS
> WHERE RDB$RELATION_NAME = 'SCHEMA_VERSION') then 1 else 0 end;
>
> Error: GDS Exception. 335544569. Dynamic SQL Error
> SQL error code = -104
> Unexpected end of command - line 2, column 62
> SQLState: 42000
> ErrorCode: 335544569
>
> I thought maybe firebird wants named result so I tried
>
> select (case when exists(SELECT RDB$RELATION_NAME FROM RDB$RELATIONS
> WHERE RDB$RELATION_NAME = 'SCHEMA_VERSION') then 1 else 0 end) as
> result;
>
> Error: GDS Exception. 335544569. Dynamic SQL Error
> SQL error code = -104
> Unexpected end of command - line 2, column 70
> SQLState: 42000
> ErrorCode: 335544569
>
> I am now down to some very basic queries that work in MS SQL but not in
> firebird:
>
> SELECT CASE
> WHEN 4 = 5 THEN 1
> WHEN 5 = 6 THEN 2
> ELSE 0
> END;
>
> Error: GDS Exception. 335544569. Dynamic SQL Error
> SQL error code = -104
> Unexpected end of command - line 5, column 2
> SQLState: 42000
> ErrorCode: 335544569
>
> or
>
> SELECT (CASE
> WHEN 4 = 5 THEN 1
> WHEN 5 = 6 THEN 2
> ELSE 0
> END) as result;
>
> Error: GDS Exception. 335544569. Dynamic SQL Error
> SQL error code = -104
> Unexpected end of command - line 5, column 10
> SQLState: 42000
> ErrorCode: 335544569
>
> I have looked at the following documentation but I don't see what I am
> doing wrong
>
> http://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25.html
>
>
> thank you for any help you can give,
>
> Jim s
>
>
Mit freundlichen Grüßen,
Thomas Beckmann
Diplom-Informatiker
Wielandstraße 14c • 23558 Lübeck
Tel +49 (22 25) 91 34 - 545 • Fax +49 (22 25) 91 34 - 604
Mail thomas.beckmann@... <mailto:thomas.beckmann@...>
ASSFINET-Logo
*ASSFINET Dienstleistungs-GmbH*
Max-Planck-Straße 14 • 53501 Grafschaft bei Bonn
info@... <mailto:info@...> • www.assfinet.de
<http://www.assfinet.de/>
Geschäftsführer: Dipl. Wirtschaftsinformatiker Marc Rindermann
Registergericht Koblenz HRB 23331
Diese E-Mail enthält vertrauliche Informationen. Wenn Sie nicht der
richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben,
informieren Sie bitte sofort den Absender und vernichten Sie diese Mail.
Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist
nicht gestattet.