4 Stimmen

Vergleichen Sie Wörter und erhalten Sie exakte Übereinstimmung

Jetzt wird es knifflig... Ich hoffe, ich kann es gut erklären..

Ich habe eine Tabelle mit Namen darin und ich muss sie mit dem von mir bereitgestellten Wort vergleichen und den genauen Treffer bekommen..

Jetzt sage ich, es ist knifflig, weil ich diese Abfrage ausprobiert habe und sie mir eine Menge von Namen gab. Es enthielt das Wort, das genau übereinstimmte, und auch Wörter, die ähnlich waren...

Das ist das, was ich gemacht habe:

DataTable dt = new DataTable();
        SqlConnection connection = new SqlConnection();
        connection.ConnectionString = ConfigurationManager.ConnectionStrings["xyz "].ConnectionString;
        connection.Open();
        SqlCommand sqlCmd = new SqlCommand("SELECT Names FROM Machines WHERE Name  Like '%' + @userName + '%'", connection);
        SqlDataAdapter sqlDa = new SqlDataAdapter(sqlCmd);

        sqlCmd.Parameters.AddWithValue("@userName", userName);

        sqlDa.Fill(dt);
        connection.Close();

Jetzt möchte ich... zum Beispiel.

Wenn die Datenbank drei Wörter hat

abc123

xyz123

pqc1238

Jetzt, wenn das Wort 123 ist, sollte es abc123 und xyz123 zurückgeben wenn c123 dann gib abc123 zurück und NICHT pqc1238 und xyz123

wenn 238 dann gib einfach pqc1238 zurück....

Ich hoffe, ich war deutlich genug... Vertrau mir, ich habe es beim ersten Mal auch nicht verstanden

alle Vorschläge sind besser, um die genauen Übereinstimmungen zwischen Wörtern zu finden.. denn LIKE reicht nicht aus..

Danke

2voto

Boris Churzin Punkte 1237

Ich würde dies nicht als GENAUEN Treffer bezeichnen, aber wenn Sie nach Wörtern suchen, die mit einem bestimmten Wort enden, versuchen Sie es mit:

"SELECT Names FROM Machines WHERE Name  Like '%' + @userName"

kein zweites %

2voto

HerbN Punkte 1449

Sie haben es fast richtig, aber Sie verstehen das % Platzhalterzeichen nicht.

In SQL wird das % Platzhalterzeichen jedes beliebige Zeichen matchen, unabhängig von der Länge. Sie möchten das am Anfang haben, weil Sie sich nicht um die führenden Teile kümmern.

Jedoch, wenn Sie es ans Ende Ihrer LIKE Vergleichszeichenkette setzen, wird es ein Match erlauben, wenn etwas nach Ihrer Zeichenkette kommt.

Also, basierend auf Ihrem Beispiel

abc123

xyz123

pqc1238

Jetzt, wenn das Wort 123 ist, sollte es abc123 und xyz123 zurückgeben, wenn c123 dann abc123 zurückgeben und NICHT pqc1238 und xyz123

wenn 238 dann einfach pqc1238 zurückgeben...

Sie haben %123% gesagt "Ich möchte alle Zeichenketten, die mit beliebigem Anfang beginnen, dann '123' haben, und dann mit beliebigem Ende enden." Das wird jede Zeichenkette matchen, die an irgendeinem Punkt '123' enthält.

Was Sie sagen möchten ist "Ich möchte alle Zeichenketten, die mit beliebigem Anfang beginnen, dann '123' haben, und dann enden." Also, das ist %123.

Zuletzt, um ein GENAUES Match mit LIKE zu bekommen, lassen Sie einfach alle Platzhalterzeichen weg.

Diese Seite hat eine ziemlich gute Übersicht über SQL Platzhalterzeichen.

1voto

JohnathanKong Punkte 1303

Meines Verständnisses nach möchten Sie nur Zeichenfolgen, die mit dem Suchmuster enden. Sie müssen daher einfach das letzte "%" in Ihrem SELECT-Befehl weglassen.

SqlCommand sqlCmd = new SqlCommand("SELECT Names FROM Machines WHERE Name Like '%" + @userName + "'", connection);

1voto

Gant Punkte 29313

Für mich sieht es so aus, als würdest du nach einem String suchen, der mit @userName endet.

SqlCommand sqlCmd = new SqlCommand("SELECT Names FROM Machines WHERE Name  Like '%' + @userName", connection);

1voto

Liz Albin Punkte 1473

Es liest sich, als ob du einen Befehl der Form select Names from Machines where Names like '%xxx' möchtest, wobei "xxx" dein Wort ist

Wenn das der Fall ist und @userName dein Wort ist, dann möchtest du sowas wie

SqlCommand sqlCmd = new SqlCommand("SELECT Names FROM Machines WHERE Name  Like '%' + @userName", connection);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X