firstName
및 lastName
열의 연결을 기반으로 테이블을 검색하려고합니다. 쿼리는 때때로 연결된 열이 여분의 공백으로 채워집니다 때문에 일치하는 항목을 찾지 못하는LEN (firstName) + LEN (lastName)이 LEN (firstName + lastName)과 같지 않음
NVARCHAR(50) NOT NULL
로이 두 가지 정의된다. 여기에 쿼리 :
SELECT firstName + lastName AS fullName, LEN(firstName) + LEN(lastName) AS realLength, LEN(firstName + lastName) AS concatLength FROM UsersTable
그리고 여기 결과에 이미지의 :
이 함께 거래는 무엇입니까? 여분의 공간을 어떻게 피할 수 있습니까? 내가 할 경우 SELECT RTRIM(firstName) + RTRIM(lastName) ...
여분의 공백없이 정확한 전체 이름을 얻을 수 있지만 RTRIM
을 사용하면 데이터 집합이 너무 커서 값이 너무 비쌉니다. 이로 인해 LEN(firstName)
이 LEN(RTRIM(firstName))
과 동일하고
, 당신은 왜 자신의 계산 열로 검색하는 값을 지속하지? –
2 개의 varchar 값을 함께 추가하면 오른쪽 패딩 된 공백이 생깁니다. 문제는 코드에 없으며 데이터에 있습니다. 무엇이든지 당신의 varchars를 채우는 것이 문제입니다. –
방금 방대한 데이터 세트에 대한 쿼리를 시도했는데 정답을주었습니다. 스크린 샷을보세요. 당신의'fullName' 컬럼은 첫 번째 이름과 빈칸을 보여줍니다. 문제는 데이터가 아니라 쿼리입니다. 나는 당신의 이름 컬럼이'NVarChar'가 아니라'VarChar'인지 (한 번했는지) 확신합니다. 한 번에 –