고유 한 호스트 이름 목록에서 다양한 고유 한 문자열을 찾기 위해 맵 테이블을 만들었습니다.SQL Server : 조인을 포함하는 where 절에 LEN 또는 변수 사용
다양한 길이 (예 : varchar(2)
, varchar(11)
등)를 입력하면 초기 코드가 작동합니다. 가변 길이는 내 문제가 발생한 부분을 참조하려고합니다.
변수를 사용하기 전에 여러 가지 조합을 시도했습니다. 나는 또한 어려움 변수를 사용하는 데 오전 m.[HostNameAlias_IDLength]
와 varchar(2)
대체 where 절에서 예를 들어
.
의견을 보내 주시면 감사하겠습니다.
TM
P. 코드 및 샘플 테이블 목록은 아래에 나열되어 있습니다.
표
HostNameAlias_id
(PK VARCHAR (5), 널되지 않음)ProjectName_ID
(INT 아니라 NULL)HostnameAlias_IDLength
(계산, INT, NULL)
데이터
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
,210
표 2
- [
host name
(PK, NVARCHAR (50), 널되지 Projectname_id
(INT), 널되지
샘플 데이터 :
Host name Title projectname_ID
--------------------------------------------------
C1234567890a1 vp 16009
C1234567890a2 avp 16009
h12335 student 16009
h12356 teacher 16009
h12357 prof 16009
쿼리
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])
왜 varchar의 길이가 걱정 되십니까? 그것은 가변 길이입니다 ...이 복잡한 점을 보지 못합니다. 만약 당신이 계속 varchar 변환에 길이를 대체하는 동적 SQL이 필요합니다 생각합니다. –
문제를 해결했거나 솔루션을 찾는 데 가장 도움이 되었기 때문에 답변을 수락하려면 [* * 틱 *] (https://ibb.co/ikqyO6)을 클릭하십시오. (nb : 클릭하여 실행 취소). ** 답변 수락 **은 답을 찾거나 해결할 질문을 찾을 때 ** 답은 문제가 해결되었음을 나타내고 ** 다른 사용자는 시간을 절약 할 수 있음을 나타냅니다. * 추신 : 당신이 대답을 수락하면 2 평판 포인트를 얻을 것이다 * –