WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Strul med Select och Where från Pervasive Databas (https://www.wn.se/forum/showthread.php?t=1049881)

Jan Eriksson 2011-09-07 16:09

Strul med Select och Where från Pervasive Databas
 
Ska hämta information från en Pervasive 9.5 databas och Select-satserna fungerar utan problem - nästan.

Vi hittade en kolumn där man har användet ett bindestreck i kolumnamnet. Det fungerar att köra en vanlig Select-sats men när vi ska köra en Where på just denna kolumn så blir resultat 0 rader.

I Pervasive använder man dubbelfnuttar runt tabell och kolumnnamn när de innehåller ogiltiga tecken.

Dessa fungerar och hämtar rätt rader:
Select E1_DD from MinTabell
Select "E1-DD" from MinTabell
Select E1_DD from MinTabell Where E1_DD = 10
Select "E1_DD" from MinTabell Where "E1_DD" = 10

Denna fungerar inte, den hämtar inga rader fast det finns flera.
Select "E1-DD" from MinTabell Where "E1-DD" = 10

Kolumnen är av typ Char, Size 8, Collate 1252

Problemmet uppstår direkt när ett bindestreck finns med och tyvärr kan jag inte döpa om kolumnen.Jag testar både genom vår applikation och genom Pervasive SQL Controll Center.

Någon som har någon idé?

*********************************************

Lägger till detta.

Denna Select-sats hämtar allt utom 10 så den fungerar.
Select "E1-DD" from MinTabell Where "E1-DD" <> 10

Jan Eriksson 2011-09-08 07:40

Måste vara en bugg i Pervasive. Fick lösa detta på följande sätt.

Select "E1-DD" from MinTabell Where "E1-DD" <= 10 AND "E1-DD" >= 10

allstars 2011-09-08 08:16

Select "E1-DD" from MinTabell Where "E1-DD" IS NOT 10 ??

Jan Eriksson 2011-09-08 08:23

Citat:

Ursprungligen postat av allstars (Inlägg 20416898)
Select "E1-DD" from MinTabell Where "E1-DD" IS NOT 10 ??

Nix, fick syntax error. Pröva även Like. Testade även:

Select "E1-DD" as test1 from MinTabell Where test1 = 10

Den vill helt enkelt inte ta lika med (=) men mer och mindre än tecknen (<>) tar den, även med lika med (<=, >=). Klart irriterande fel.

MRDJ 2011-09-08 09:09

Citat:

Ursprungligen postat av Jan Eriksson (Inlägg 20416897)
Måste vara en bugg i Pervasive. Fick lösa detta på följande sätt.

Select "E1-DD" from MinTabell Where "E1-DD" <= 10 AND "E1-DD" >= 10

är det inte såhär man skall göra?

Select [E1-DD] from MinTabell Where [E1-DD] <= 10 AND [E1-DD] >= 10

Jan Eriksson 2011-09-08 09:11

Citat:

Ursprungligen postat av MRDJ (Inlägg 20416905)
är det inte såhär man skall göra?

Select [E1-DD] from MinTabell Where [E1-DD] <= 10 AND [E1-DD] >= 10

Stämmer, i bland annat MSSQL med i Pervasive (PSQL) använder man dubbelfnuttar (")


Alla tider är GMT +2. Klockan är nu 17:40.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson