Ich verwende eine SELECT-Anweisung in T-SQL auf einem Tisch ähnlich wie diese:SQL: Verwenden Sie mehrere Werte in einzelnen SELECT-Anweisung
SELECT DISTINCT name, location_id, application_id FROM apps
WHERE ((application_id is null) or (application_id = '4'))
AND ((location_id is null) or (location_id = '3'))
Dies scheint gut zu funktionieren, wenn für eine application_id oder ein location_id Suche , aber was ist, wenn ich die Anweisung für mehrere Standorte ausführen möchte? Ich möchte alle Ergebnisse für eine unbekannte Anzahl von location_id's und application_id's zurückgeben. Zum Beispiel, wenn ich jemanden auf der location_id 2, 3, 4, 5 aber mit nur einer Anwendungs-ID suchen wollte. Wie würde ich das tun?
Vielen Dank im Voraus!
EDIT: Ich bin ein Idiot! Ich habe es leicht gemacht, ohne Ihnen alle Details zu geben. Alle diese Werte werden innerhalb einer Tabelle angegeben. Der Benutzer muss die IDs aus einer Spalte in der Tabelle auswählen, anstatt sie einzufügen. Nach ein wenig Forschung zu diesem Problem I came up with a page schien eine tragfähige Lösung zu tout.
CREATE FUNCTION iter$simple_intlist_to_tbl (@list nvarchar(MAX))
RETURNS @tbl TABLE (number int NOT NULL) AS
BEGIN
DECLARE @pos int,
@nextpos int,
@valuelen int
SELECT @pos = 0, @nextpos = 1
WHILE @nextpos > 0
BEGIN
SELECT @nextpos = charindex(',', @list, @pos + 1)
SELECT @valuelen = CASE WHEN @nextpos > 0
THEN @nextpos
ELSE len(@list) + 1
END - @pos - 1
INSERT @tbl (number)
VALUES (convert(int, substring(@list, @pos + 1, @valuelen)))
SELECT @pos = @nextpos
END
RETURN
END
Kann jemand mir helfen, dieses zu perfektionieren, um meine Bedürfnisse zu erfüllen? Entschuldigung, wenn meine Frage nicht sehr klar ist, da ich mich selbst bemühe, mich damit auseinander zu setzen.
EDIT 2: Nach etwas mehr Lesung zu dem Thema zu tun scheint es, dass ich eine gespeicherte Prozedur muß dies zu tun. Der Code oben scheint das zu sein, was ich brauche, aber ich habe Probleme, ihn an meine Bedürfnisse anzupassen. Die Tabellenstruktur ist wie folgt:
application_id name location_id
------------------------------------------------------
1 Joe Blogs 34
2 John Smith 55
Laut dem Artikel, den ich nur verknüpft haben:
„Der richtige Weg, um die Situation der Handhabung ist eine Funktion zu verwenden, dass die Zeichenfolge auspackt Hier ist eine sehr einfache solche Funktion in eine Tabelle:“
so scheint es, dass ich diese Werte in einen String auspacken müssen und geben sie durch die Nutzung dieser gespeicherten proc. edure. Irgendeine Idee, wie ich das zur Arbeit bringen kann?
EDIT 3: Ich habe es mit charindex() und convert() gelöst, während sie oben gesetzt. Vielen Dank für Ihre Hilfe und ich entschuldige mich nochmals dafür, dass ich Schmerzen habe.
Durch die Veröffentlichung der Tabellendefinition und einiger Beispielzeilen, Abfragen und erwarteter Antworten würde sich die Qualität der Antworten verbessern. – Andomar
Entschuldigung dafür, dass ich keine vollständige Erklärung gegeben habe, nur ein paar technische Schwierigkeiten zu erleben, während ich mir mit diesem Problem den Kopf zerbringe. –
Es ist immer noch nicht klar, was das Problem ist. Ist das Problem, dass Sie nicht tun können, was Sie tun möchten (warum können Sie nicht einfach die IN-Anweisung im Code von den Benutzereingaben erstellen?) - oder sind Sie besorgt über die Sicherheitsprobleme, die durch den verlinkten Artikel aufgeworfen werden? Ich würde mich nur um Letzteres kümmern, wenn das eine App ist, die im Internet sitzt. –