reinix
Goto Top

Raute in Abfrage mit Like

Hi,
ich habe eine Abfrage mit sehr viel Datensätzen.
Die Abfrage hat bisher ca 7 Minuten gebraucht bis sie durch gelaufen war.

Heute habe ich festgestellt, dass ein Problem besteht.
Ich vergleiche 2 Felder aus 2 verschiedenen Tabellen mit dem schlüsselwort Like
Field1 like Field2 & "*"

Nun ist im rechten operand (field2) eine #
Da ich nicht alle Rauten in der Tabelle durch [#] ersetzen kann, habe ich meinen query modifizerit:
Feld1 like Replace(feld2, "#", "[#]") & "*"

Allerdings benötigt mein query nun etwa 45 minuten.
Das ist für mich fast untragbar.

Gibt es da keine tollere möglichkeit?

Content-ID: 117801

Url: https://administrator.de/contentid/117801

Ausgedruckt am: 16.11.2024 um 05:11 Uhr

27234
27234 09.06.2009 um 14:29:47 Uhr
Goto Top
Hallo,

von welcher Datenbank reden wir?

Gruß René
76109
76109 09.06.2009 um 15:02:48 Uhr
Goto Top
Hallo ReiniX !

Schreib mal ein Original-Beispiel Feld1 und Feld2.

Gruß Dieter
ReiniX
ReiniX 09.06.2009 um 16:13:42 Uhr
Goto Top
Es dreht sich um MS-Access! ...hatte ich ganz vergessen...

Query:
SELECT DISTINCT SecurityExplorer_06.Path INTO EnableThisPaths
FROM [DriveF_2009-03-17], SecurityExplorer_06
WHERE (((SecurityExplorer_06.Path)=[DriveF_2009-03-17].Verzeichniss)) Or (((SecurityExplorer_06.Path) Like replace([DriveF_2009-03-17].Verzeichniss,"#","[#]") & "*") And (([DriveF_2009-03-17].ListSubDirs)=True));

[DriveF_2009-03-17].Verzeichniss:
F:\POOL\#0-Mail-REU2\

SecurityExplorer_06.Path:
F:\POOL\#0-Mail-REU2\
F:\POOL\#0-Mail-REU2\ALCA\
F:\POOL\#0-Mail-REU2\ALCA\Mails\


Query soll für alle Verzeichnisse in [DriveF_2009-03-17] Prüfen, ob das Verzeichniss auch in SecurityExplorer_06 existiert. Wenn in [DriveF_2009-03-17] ein Feld "ListSubDirs" gesetzt ist auch prüfen ob Unterordner existieren.
Alle gefunden Pfade und Unterordner werden dann in eine neue Tabelle gespeichert

[DriveF_2009-03-17] hat ca 200 Zeilen
SecurityExplorer_06 hat ca 100000 Zeilen
76109
76109 09.06.2009 um 17:28:42 Uhr
Goto Top
Hallo ReiniX!

Also in VBA funktioniert das mit dem Like-Replace, aber in SQL wird Like anders verwendet. Da gibt es als Platzhalter "%" und "_" anstatt "*" siehe hier Like-Operator:

http://www.sql-und-xml.de/server-daten/sql-befehle/operatoren.html

Gruß Dieter