Warum funktioniert die SQL-Abfrage nicht?

2 Antworten

Der Fehler, den du bekommst, tritt auf, weil du den Vergleichsoperator LIKE in Kombination mit dem = Operator in der WHERE-Klausel verwendest. SQL interpretiert das = Zeichen in der Zeile CAST(c.name AS NVARCHAR(MAX)) LIKE '%' + @SearchWord + '%' als ein Versuch, eine Bedingung wie = zu verwenden, und das führt zu einem Syntaxfehler.

DECLARE @SearchWord NVARCHAR(55) = '0x4f';


SELECT
  t.name AS Tabellenname,
  c.name AS Spaltenname
FROM
  sys.tables t
JOIN
  sys.columns c ON t.object_id = c.object_id
WHERE
  t.name = 'kundenadresse'
AND EXISTS (
  SELECT 1
  FROM
    kundenadresse
  WHERE CHARINDEX(@SearchWord, CONVERT(NVARCHAR(MAX), c.name, 1)) > 0
);


Manager1221 
Fragesteller
 13.09.2023, 08:21

Nun der Fehler Code besteht weiter hin. Kann es an allen = liegen?, denn irgendwas stimmt in Position 34 wieder nicht. Ich habe mal versucht: Sobald ich oben im Declare das = weg nehme meckert er rum bzw. gibt eine neue Fehlermeldung, das heißt es liegt an dem = dort. Was kann ich machen oder ausprobieren? Danke für deine vorherige Antwort!

0
Manager1221 
Fragesteller
 13.09.2023, 08:30

Denke mal habe soeben das Problem gelöst. Nun jetzt meckert er unten im Where Charindex rum:

SQL1 (DD Remote 12.0)  Fehler: 

AdsQuery1: Error 7200: AQE Error: State = 42000;  NativeError = 2115; [SAP][Advantage SQL Engine]Expected lexical element not found: <identifier> -- Missing table name. There was a problem parsing the table names after the FROM keyword. There was a problem parsing the WHERE clause. -- Location of error in the SQL statement is: 259 (line: 16 column: 5)

0