2013-10-29 4 views
0

이 질문은 SQL Server 2005와 관련이 있습니다. 2 개의 UDF가 있는데, 1 개는 2 열을 포함하는 국가 코드 테이블을 조회합니다. 국가의 약어를 포함하는 "코드"와 해당 국가의 이름을 포함하는 "이름". 이 두 UDF는 주소를 전달 받고 문자열을 분할하는 UDF로 분리 된 문자열을 기반으로 조회를 수행합니다. 예를 들어SQL REPLACE 문이 하위 쿼리로 예상 결과를 반환하지 않습니다.

:

SELECT dbo.GetCountryName('SAMPALOC MANILA PHILIPPINES 1000') 

반환 "필리핀"과

SELECT dbo.GetCountryCode('SAMPALOC MANILA PHILIPPINES 1000') 

반환 "PH."

가 완벽하게 작동하지만 난 그들을 사용할 때 문 교체됩니다

SELECT REPLACE(('SAMPALOC MANILA PHILIPPINES 1000'), 
(SELECT dbo.GetCountryName('SAMPALOC MANILA PHILIPPINES 1000')), 
(SELECT dbo.GetCountryCode('SAMPALOC MANILA PHILIPPINES 1000'))) 

내가 얻을 "SAMPALOC 필리핀 마닐라 1000"그리고 내가 그것을 할 필요하면 "SAMPALOC 마닐라의 PH 1000"입니다 전체 주소의 길이가 60보다 큰 경우이 작업을 수행해야합니다.

REPLACE 문에 이것을 넣으면 실패 할 수 있습니다. 다른 사람이이 문제를 겪고 있거나 이런 일이 발생하는 이유를 알고 있습니까?

+1

확실히 'GetCountryName' UDF는 공백이있는 값을 반환하지 않습니까? 아마도'varchar' 대신에'char' 자료형일까요? –

+0

예, @Martin이 옳습니다. 기능이 언급 한 값을 반환하면 함수 교체가 필요한대로 작동합니다. – Deepshikha

+0

네, 정확히 그게 그랬습니다. UDF가 후행 공백을 반환하고있었습니다. 바꾸기 기능이 올바르게 작동 중입니다. 감사. – kdejarnet

답변

0

LTRIM 및 RTRIM 기능에서 UDF의 내 반환 변수를 포함합니다. 문제 해결됨.

관련 문제