Ich habe eine Zuordnungstabelle erstellt, um verschiedene eindeutige Zeichenfolgen innerhalb einer großen Liste eindeutiger Hostnamen zu finden.SQL Server: Verwenden eines LEN oder einer Variablen in where-Klausel, die eine Verknüpfung enthält
Der erste Code funktioniert, wenn ich die verschiedenen Längen eingeben, d. H. varchar(2)
, varchar(11)
, usw. Es versucht, die variablen Längen beziehen, wo meine Probleme begann.
Ich habe verschiedene Kombinationen ausprobiert, bevor ich versuche, eine Variable zu verwenden.
Zum Beispiel in der where-Klausel, Substitution der varchar(2)
mit dem m.[HostNameAlias_IDLength]
ich auch Schwierigkeiten mit Variablen, die ich.
Alle Gedanken würden sehr geschätzt werden.
TM
P.S. Eine Auflistung der Code- und Beispieltabellen ist unten aufgeführt.
Tabelle1
HostNameAlias_id
(pk, VARCHAR (5), nicht null)ProjectName_ID
(int, nicht null)HostnameAlias_IDLength
(berechnet, int, null)
Daten
HostNameAlias_ID ProjectName_ID HostNameAlias_IDLength
----------------------------------------------------------
H123456789023456 16009 16
B123456789023 16005 13
C1234567890 16009 11
d12345678 16009 9
e123456 16009 8
f12345 16003 6
g1234 16035 5
h123 16035 4
j12 16005 3
k1 16007 2
Table2
- [
host name
] (pk, nvarchar (50), nicht null Projectname_id
(int, nicht null)
Probendaten:
Host name Title projectname_ID
--------------------------------------------------
C1234567890a1 vp 16009
C1234567890a2 avp 16009
h12335 student 16009
h12356 teacher 16009
h12357 prof 16009
Abfrage
DECLARE @len = INT()
DECLARE @slen = VARCHAR(2);
SELECT DISTINCT
@len = m.[HostNameAlias_IDLength],
@slen = CONVERT(varchar(2), m.[HostNameAlias_ID]),
c.[Host Name],
m.[projectname_id]
FROM
[table1] c
JOIN
[table2] m ON c.[projectname_id] = m.[projectname_id]
WHERE
CONVERT(varchar(2), [Host Name]) IN (SELECT [HostNameAlias_ID]
FROM [table2])
Warum sind Sie besorgt über die Länge eines Varchar? es hat eine variable Länge ... den Punkt dieser Komplexität nicht zu sehen. Wenn Sie daran festhalten, denke ich, dass Sie dynamic sql benötigen, um eine Länge in die Varchar-Konvertierung zu ersetzen. –
Bitte ["* Klicken Sie auf ein Häkchen *"] (https://ibb.co/ikqyO6), um eine Antwort zu akzeptieren, entweder weil Sie Ihr Problem gelöst haben oder am hilfreichsten war, um Ihre Lösung zu finden. Zum Rückgängigmachen klicken). ** Die Annahme einer Antwort zeigt, dass die Frage gelöst ist und dass ** anderen Zeit spart **, wenn nach Lösungen gesucht wird oder nach zu lösenden Fragen gesucht wird. * ps: du bekommst 2 Rufpunkte, wenn du eine Antwort akzeptierst * –