Benutzer mit den meisten Antworten
Where- Klausel mit Select

Frage
-
Hallo zusammen,
folgendes Problem. Hier eine WHERE-Klausel:and
(ltrim(rtrim(nf3.Such))) COLLATE database_default
in
(SELECT (ia.Such) as Vergleich FROM [BI02].[dbo].[Industrielle_Automation_01]ia)Die Spalte nf3.Such enthält Zeichenfolgen aus 2, 3 oder mehr Zeichen.
Die Spalte ia.Such enthält Zeichenfolgen aus 2 oder 3 Zeichen.
Jetzt möchte ich so etwas erreichen wie nf3.Such like ia.Such + '%'. Wie kann man so etwas in diesem Select einbauen?
Danke für die Hilfe!
Viele Grüße
Olaf
- Bearbeitet Olaf113 Montag, 21. September 2020 08:57
Antworten
-
Hallo Olaf,
poste doch bitte die Tabellenstrukturen als CREATE TABLE Statements, Beispieldaten als INSERT INTO Statements und das gewünschte Ergebnis, basierend auf den geposteten Beispieldaten.
Grundsätzlich geht es bspw. so:
SELECT ... FROM ... ia INNER JOIN ... ia01 ON ia.such LIKE ia01.such + '%'
Ich würde allerdings eher einen Ansatz in dieser Form wählen, wenn möglich:
SELECT ... FROM ... ia WHERE <IdSpalte> IN ( SELECT <ForeignKeySpalte> FROM <AndereTabelle> at WHERE at.such LIKE ia.such + '%' )
Ob das nun besser und performanter ist, hängt aber von vielen Faktoren ab. Da wir die aber leider nicht kennen, ...
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport
- Bearbeitet Stefan FalzModerator Montag, 21. September 2020 09:11
- Als Antwort markiert Olaf113 Montag, 21. September 2020 13:07
-
Hallo Olaf,
kannst Du kein Kreuzprodukt machen?
CREATE TABLE #a(Such varchar(10)); CREATE TABLE #b(Such varchar(3)); INSERT INTO #a(Such) VALUES('a'),('ab'),('abc'),('abcd'); INSERT INTO #b(Such) VALUES('ab'),('abc'); SELECT #a.Such AS A_Such, #b.Such AS B_Such FROM #a, #b WHERE #a.Such COLLATE database_default LIKE #b.Such + '%' ORDER BY A_Such, B_Such; GO DROP TABLE #a; drop table #b;
Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu
- Als Antwort markiert Olaf113 Montag, 21. September 2020 09:58
Alle Antworten
-
Hallo Olaf,
poste doch bitte die Tabellenstrukturen als CREATE TABLE Statements, Beispieldaten als INSERT INTO Statements und das gewünschte Ergebnis, basierend auf den geposteten Beispieldaten.
Grundsätzlich geht es bspw. so:
SELECT ... FROM ... ia INNER JOIN ... ia01 ON ia.such LIKE ia01.such + '%'
Ich würde allerdings eher einen Ansatz in dieser Form wählen, wenn möglich:
SELECT ... FROM ... ia WHERE <IdSpalte> IN ( SELECT <ForeignKeySpalte> FROM <AndereTabelle> at WHERE at.such LIKE ia.such + '%' )
Ob das nun besser und performanter ist, hängt aber von vielen Faktoren ab. Da wir die aber leider nicht kennen, ...
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport
- Bearbeitet Stefan FalzModerator Montag, 21. September 2020 09:11
- Als Antwort markiert Olaf113 Montag, 21. September 2020 13:07
-
Hallo Olaf,
kannst Du kein Kreuzprodukt machen?
CREATE TABLE #a(Such varchar(10)); CREATE TABLE #b(Such varchar(3)); INSERT INTO #a(Such) VALUES('a'),('ab'),('abc'),('abcd'); INSERT INTO #b(Such) VALUES('ab'),('abc'); SELECT #a.Such AS A_Such, #b.Such AS B_Such FROM #a, #b WHERE #a.Such COLLATE database_default LIKE #b.Such + '%' ORDER BY A_Such, B_Such; GO DROP TABLE #a; drop table #b;
Einen schönen Tag noch, Christoph - http://www.insidesql.org/blogs/cmu
- Als Antwort markiert Olaf113 Montag, 21. September 2020 09:58