![]() |
Datenbank: MSSQL • Zugriff über: .
SQL-Fehler bei MSSQL
Hallo allerseits,
ich bekomme bei folgender Abfrage immer den Fehler "Incorrect Syntax near 'A'", und zwar in Zeile 2, egal ob ich das Statement in meinem Programm oder im DB-Explorer aufrufe.
SQL-Code:
Fragt nicht, was das 0=0 da soll, das ist einfach nur so weil das Statement halt vom Programm so zusammengestellt wird, manchmal steht da auch 1=0 oder so...
SELECT N.TEXT,A.AUTHORIZEDGROUPS FROM PAYMENTTERMS A,NLSUSER N WHERE A.MANDANTID=0
AND ((A.AUTHORIZEDGROUPS IS NULL) OR (0=0) OR (';0;' IN A.AUTHORIZEDGROUPS)) AND N.LANGUAGEID=0 AND N.TOPICID=18 AND N.FIELDID=A.NLSFIELDID Das Statement funktioniert perfekt auf Oracle, perfekt auf SQLBase, und überhaupt nicht auf MSSQL. Ich finde da einfach keinen Fehler :roll: Greetz alcaeus |
Re: SQL-Fehler bei MSSQL
Hai alcaeus,
hast Du einmal versucht deine ganzen WHERE-Bedingungen in Klammern zu setzen
SQL-Code:
SELECT N.TEXT,A.AUTHORIZEDGROUPS FROM PAYMENTTERMS A,NLSUSER N
WHERE (A.MANDANTID=0) AND ((A.AUTHORIZEDGROUPS IS NULL) OR (0=0) OR (';0;' IN A.AUTHORIZEDGROUPS)) AND (N.LANGUAGEID=0) AND (N.TOPICID=18) AND (N.FIELDID=A.NLSFIELDID) |
Re: SQL-Fehler bei MSSQL
Hallo Sharky,
ja, hab ich schon, leider hat das nichts gebracht. Der Fehler kommt immer noch. Greetz alcaeus |
Re: SQL-Fehler bei MSSQL
Zeile 2 kannst Du auch weglassen, da der Ausdruck aufgrund von "(0=0) immer True zurückliefert...
Gruß |
Re: SQL-Fehler bei MSSQL
Zitat:
Greetz alcaeus |
Re: SQL-Fehler bei MSSQL
Hmmm.... ausser das Du einem Feld den Namen Text gegeben hast fällt mir so nichts auf :gruebel:
Hast Du mal den SQL-Code zum erzeugen der beiden Tabellen? |
Re: SQL-Fehler bei MSSQL
Hatte nicht zu ende gelesen (0=0)
Versuch mal die Feld- und Tabellenbezeichnungen in eckige Klammern zu setzen "[" und "]" |
Re: SQL-Fehler bei MSSQL
Hallo allerseits,
ich habe herausgefunden dass dieses Statement den Fehler hervorruft:
SQL-Code:
Geht das bei MSSQL nicht?
(';0;' IN A.AUTHORIZEDGROUPS)
Greetz alcaeus |
Re: SQL-Fehler bei MSSQL
versuchs mal mit:
SQL-Code:
(PATINDEX('%;0;%',A.AUTHORIZEDGROUPS) > 0)
|
Re: SQL-Fehler bei MSSQL
Hallo allerseits,
sorry fuer die Verspaetung, aber die HDSL-Linie im Betrieb war down :wall: In gibt es bei MSSQL nicht, man muss den Umweg ueber CharIndex nehmen. Danke fuer eure Hilfe. Greetz alcaeus |
Re: SQL-Fehler bei MSSQL
Zitat:
da sagt meine MS-SQL Onlinehilfe aber etwas anderes ;-) SQL Server Onlinehilfe test_expression [NOT] IN ( subquery | expression [ ,...n ] ------------------------------------- expression [,...n] Eine Liste mit Ausdrücken, die auf Übereinstimmungen geprüft werden sollen. Alle Ausdrücke müssen denselben Datentyp besitzen wie test_expression.
SQL-Code:
SELECT au_lname, state
FROM authors WHERE state IN ('CA', 'IN', 'MD') |
Re: SQL-Fehler bei MSSQL
Hallo Sharky,
das ist aber dann genau umgekehrt wie bei Oracle, jedenfalls wenn ich das Statement richtig verstanden habe. Ich will ja prüfen, ob eine Zeichenfolge in der Spalte vorkommt. Mit deinem Statement prüfe ich, ob der Wert in der Spalte einem Element der Liste entspricht. Bei Oracle prüfe ich mit IN, ob der Wert in der Spalte vorkommt. (Jedenfalls glaube ich dass es so ist, ich hab es noch nie selbst verwendet ;)) Mit CHARINDEX funktioniert es aber so wie ich will :) Greetz alcaeus |
Re: SQL-Fehler bei MSSQL
Zitat:
Warum verwendest Du dann nicht Like?
SQL-Code:
WHERE (A.AUTHORIZEDGROUPS LIKE '%0%')
|
Re: SQL-Fehler bei MSSQL
Weil ich gestern nicht klar denken konnte, das Statement bereits im Code war (ich habs nicht geschrieben), und ich einfach nur den Fehler auf MSSQL ausbessern musst :wall:
Bei der nächsten Änderung in dem Modul werd ich das mal gleich mitändern, danke :) Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz