2011-04-18 6 views
8

저는 +을 사용하여 여러 열의 값을 연결합니다. 그러나 + 해당 열 중 하나에 null 값이 있으면 작동하지 않습니다. 예를 들어는 Tsql의 null 값 열을 연결합니다.

Select null+ 'Test' 

쿼리는 '테스트'대신 null을 반환합니다.

이 문제를 해결하기위한 조언은 무엇입니까? SQL 서버 2012 이전 버전에

답변

16

이 문제를 방지하기 위해

Select ISNULL(YourColumn,'') + 'Test' /*Or COALESCE(YourColumn,'')*/ 

를 사용해야합니다.

연결 옵션 SET CONCAT_NULL_YIELDS_NULL OFF이 있지만 더 이상 사용되지 않습니다.

SQL Server 2012에는 연결시 NULL을 빈 문자열로 처리하는 CONCAT 함수가 도입되었습니다. ?

SELECT CONCAT(null,'Test') 
+0

내가 MSSQL에 오라클에서 내 프로젝트를 마이그레이션하고 그것을 해결하는 또 다른 방법은, 내가 싶어 모든 제어 – jhash

+0

@jhash에 ISNULL 컨트롤을 추가 해달라고있다 - 유일한 3 내가 알고있는 길은 이미 나의 대답에있다. 'ISNULL','COALESCE' 또는'CONCAT_NULL_YIELDS_NULL'을 사용합니다. 나는 모든 관련 장소에'COALESCE'를 표준으로 추가하고 Oracle과 SQL Server 모두에서 작동 할 것입니다. 더 이상 사용되지 않는 기능을 사용하려고하지만 향후 버전에서는 작동하지 않으며이 연결 옵션은 일부 SQL Server 기능과 호환되지 않습니다. 나는 그것을 직접 사용하지 않을 것이다. –

+0

감사합니다 마틴에 대한 자세한 답변을 – jhash

0

사용 IsNull :

SELECT IsNull(MyColumn, '') + 'Test' ... 
+0

해결할 다른 방법이 있습니까? oracle에서 mssql으로 프로젝트를 마이 그 레이션하고 있습니다. 모든 컨트롤에 isnull 컨트롤을 추가하고 싶지 않습니다. – jhash

+0

마틴은 쿼리를 변경하지 않고도 작업 할 수있는 솔루션을 가지고 있다고 생각합니다. – Larry