2016-05-09 23 views
0

Auf Spaltenwerte kann wie ein Array im SQL Server zugegriffen werden. zum Beispiel Select x[1] from tableA gibt mir den Wert für dieses Feld. Ich versuche dies zu tun @OldValue = (SELECT @fieldname FROM #del). Aber das liefert nur den tatsächlichen Feldnamen und nicht den FeldwertZugriff auf Spaltenwerte wie ein Array im SQL Server

+1

Nicht so, können sie nicht. Was versuchst du zu machen? Was ist X, eine Spalte in TabelleA? Was enthält es? –

+0

Wenn Sie C# verwenden und eine SQL-Abfrage ausführen, können Sie die Ergebnisse anhand der Ordinalposition referenzieren, nicht jedoch in SQL selbst. –

+0

Ich versuche, einen Wert aus der gelöschten Tabelle zu erhalten, ohne den Spaltennamen in der Abfrage anzugeben. So kann es dynamisch sein. @OldValue = (SELECT d.NAME FROM #del). – bflow1

Antwort

1

Nein. Daten in Tabellen sind nicht geordnet, daher gibt es keine erste, zweite usw. Aufzeichnung. Sie greifen auf einen Datensatz nach einigen Kriterien zu, z. ein Benutzer mit einer Benutzer-ID oder einem Anmeldenamen, ein Mitarbeiter mit einer Angestelltennummer usw. Oder Sie verwenden technische IDs, um auf Datensätze zuzugreifen.

Wenn Sie den fünften Datensatz nach einer bestimmten Reihenfolge möchten, können Sie normalerweise eine Limit-Klausel verwenden. Zum Beispiel:

SELECT * 
FROM user 
ORDER BY userid 
OFFSET 4 ROWS FETCH NEXT 1 ROW ONLY; 

holt den fünften Datensatz nach Benutzer-ID sortiert.

Wie Spalten: Sie sind durch ihre Namen zugegriffen. ZB:

SELECT name 
FROM user 
ORDER BY userid 
OFFSET 4 ROWS FETCH NEXT 1 ROW ONLY; 

Wie sehen Sie es keinen Sinn machen würde einige Excel-ähnlichen Zugriff zu haben, weil Sie einen Auftrag durch Klausel benötigen und Spalten über seinen Namen zugreift, anstatt von einigen Buchstaben oder eine Zahl ist sogar besser lesbar und weniger anfällig für Fehler.

Verwandte Themen