Frage
Select a, b, c from table where a in (1, 2, 3)
Was passiert, wenn sich die Liste in einer Spalte befindet?
Ich versuche es mit folgendem Fehler:
Select a, b, c from a in b
Tut mir leid, dass ich meine Frage nicht klargestellt habe.
Es ist nicht über verbinden oder in (wählen Sie b aus der Tabelle aus)
Der Typ der Spalte B ist nvarchar, die Daten sind eine Liste, etwa „1,2,5“.
Spalte ein Typ ist int.
Keine korrekte Lösung
Andere Tipps
Ihre Frage nach dem Lesen, das ist, was Sie wollen:
SELECT
a,b,c
FROM
tblA
WHERE
b LIKE CAST(a as nvarchar) + ',%'
OR b LIKE '%,' + CAST(a as nvarchar) + ',%'
OR b LIKE '%,' + CAST(a as nvarchar)
Das sollte es tun.
Viele Antworten in der richtigen Richtung, aber ich denke, das wird wirklich funktionieren:
SELECT a, b, c
FROM table
WHERE ',' + b + ',' LIKE '%,' + CAST(a as varchar) + ',%'
Sie können dies durch die Durchsetzung B beginnt beschleunigen und endet mit einem Komma. Oder noch besser, um die Datenbank normalisieren und die Spalte B mit einer Eins-zu-viele-Beziehung zu seiner eigenen Tabelle bewegen.
In SQL hat eine Spalte normalerweise einen der sogenannten „skalaren“ Datentypen:Zahlen, Datum/Uhrzeit, Zeichenfolgen – siehe z.B. MSDN.Wenn Sie besser erklären, in welchem Sinne Sie „eine Liste“ in die Spalte aufgenommen haben b
, und wie, z.B.zeig uns das CREATE TABLE a
Aussage, wir können Ihnen vielleicht besser helfen!
Siehe SQL Query-Hilfe benötigen, um eine gespeicherte Prozedur Liste Parameter Abgleich mit einzelnen Spalten . Es zeigt, wie eine benutzerdefinierte Funktion schreiben, die Ihr „Liste“ -Spalte nehmen und eine Tabelle zurück, die Sie gegen eine verbinden können Sie sind auswählen.
Ich glaube, Sie wollen die Tabellen verknüpfen?
SELECT a, b, c
FROM a
JOIN b ON a.ID=b.ID