2017-12-19 48 views
0
Suche

Um Geschwindigkeit der Suche in der Datenbank zu erhöhen, mag ich so etwas wie dies zu tun:Ersetzen Wert von Feldern Vor

Wenn Feld TheFieldName (ohne Leerzeichen drin) mit Test gleich war dann zeigen den Rekord (en)

wie kann ich es tun?

Diese did'nt für mich arbeiten:

"SELECT * FROM TheTableName WHERE REPLACE(TheFieldName, ' ', '')=test" 

Fehler: Nicht definierte Funktion 'Ersetzen' in Ausdruck

+0

Was Sie hier tun, wird die Ersetzungsoperation für jede Zeile in TheTableName ausführen, bevor es überhaupt mit dem Vergleich beginnen kann. Dies wird Ihre Suchgeschwindigkeit nicht verbessern. – DancingFool

+0

@DancingFool sind Sie sicher, dass die Geschwindigkeit des Prozesses in VB6-Codes mit einer Geschwindigkeit von Prozess in SQL-Engine gleich sind !? –

+0

ich wieder Internet gesucht haben, so scheint es, meine adodb Version in VB6 nicht Befehl von SQL ersetzen unterstützt :(es scheint, gibt es keine Möglichkeit, ich habe beschlossen, den Prozess in VB6 statt SQL-Befehle zu tun: ‚( –

Antwort

1

Es scheint mir unwahrscheinlich, dass replace() nicht in SQL Server bekannt ist (oder fast jede andere Datenbank). Vergewissern Sie sich jedoch, dass Sie die Datenbank verwenden, die Sie für richtig halten.

Ihre Anfrage, wie geschrieben, macht einen Fehler haben - weil Sie scheinen test als String zu wollen. Sieht die Abfrage wirklich so:

SELECT * 
FROM TheTableName 
WHERE REPLACE(TheFieldName, ' ', '') = 'test'; 

Hinweis Beachten Sie die Anführungszeichen um 'test'.

+0

I‘ m mit visual basic 6 auf xp (Microsoft Activex Datenobjekte 2.8 Bibliothek) –

+0

Ich suche nach etwas wie TRIM, aber um alle Leerzeichen in der Suchfolge zu entfernen –

+0

Aufruf OBJRS_RV_LOCAL.Open (SQL_STRING, OBJCN, adOpenForwardOnly, adLockReadOnly, adCmdText) –

0

Das sollte funktionieren.

+1

Ja, das könnte funktionieren, für eine andere Frage. Die Räume im Inneren 'TheFieldName' Säule bleiben. Alles, was Sie tun, ist das Entfernen führende und nachfolgende Leerzeichen. –

Verwandte Themen