Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL LIKE *Sonderzeichen* (https://www.delphipraxis.net/176339-sql-like-%2Asonderzeichen%2A.html)

Janine90 28. Aug 2013 14:18

Datenbank: x • Version: x • Zugriff über: x

SQL LIKE *Sonderzeichen*
 
Hallo :)

Ich habe grade das Problem mit meinen Datenbankzugriff und hoffe ihr könnt helfen.

In meiner SQL Datenbank habe ich unter anderen beide Spalten
text_id | text
_____________|___________________
T_4_GR_001 | beliebiger Text
T_4_GR_002 | beliebiger Text
T_4_GR_003 | beliebiger Text
T_4_GR_004 | [123]
T_4_GR_005 | [234]
T_4_GR_006 | [345]
T_4_GR_007 | [347]
T_5_GR_001 | beliebiger Text
T_5_GR_002 | [349]

Ich möchte aber nur diese Spalten bekommen
T_4_GR_001 | beliebiger Text
T_4_GR_002 | beliebiger Text
T_4_GR_003 | beliebiger Text

Programmiert habe ich folgendes
Code:
 
  text := '[%';
  text_id := 'T_4_GR%';
  SQLQuery.SQL.Clear;
  SQLQuery.SQL.Add('SELECT *');
  SQLQuery.SQL.Add('FROM datenbank);
  SQLQuery.SQL.Add('WHERE text_id LIKE :text_id AND text LIKE :text');
  SQLQuery.Parameters.ParamByName('text_id').Value := text_id;
  SQLQuery.Parameters.ParamByName('text').Value := text;
  SQLQuery.open;
Was funktioniert nun noch nicht?
Wenn ich nur beim Where die text_id abfrage, dann bekomme ich auch die entsprechenden Werte aus der Datenbank, aber sobald ich den Text mit [% Vergleich funktioniert es nun nicht mehr. Meine Vermutung ist, dass es an dem "[" liegt.
Habt ihr Erfahrung damit?

baumina 28. Aug 2013 14:33

AW: SQL LIKE *Sonderzeichen*
 
Du könntest versuchen ein Escape-Zeichen vor das [ zu setzen. Also:

Delphi-Quellcode:
text := '\[%';
für MySQL (wobei in MySQL [ kein Sonderzeichen ist)
Delphi-Quellcode:
text := '[[]%';
für MSSQL einklammern

Morphie 28. Aug 2013 14:36

AW: SQL LIKE *Sonderzeichen*
 
Um was für ein Datenbankmanagementsystem handelt es sich denn?
SQL Server?
MySQL?
FireBird?
PostgreSQL?
...

p80286 28. Aug 2013 15:11

AW: SQL LIKE *Sonderzeichen*
 
Versuch es doch mal mit
Code:
not like :Text
Gruß
K-H

Janine90 28. Aug 2013 15:43

AW: SQL LIKE *Sonderzeichen*
 
Danke so funktioniert es jetzt :)

Zitat:

Zitat von p80286 (Beitrag 1226527)
Versuch es doch mal mit
Code:
not like :Text

Zitat:

Zitat von baumina (Beitrag 1226524)
Du könntest versuchen ein Escape-Zeichen vor das [ zu setzen. Also:
Code:
text := '[[]%';
für MSSQL einklammern



Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz