2013-03-07 1 views
0

C#을 통해 일부 데이터를 가져올 때 내 인생을 더 쉽게 만들 수있는 시각을 가지고 있습니다. SQL 측에서 모든 변환과 캐스팅 (그리고 정확한 열 길이 설정)을 할 수 있다면 엄청난 시간을 절약 할 수 있습니다. C#에서 (왜냐하면 내 C# 코드는 모두 동적이며 하드 코딩되지 않으며 물건의 길이가 맞지 않을 때 넘어지기 때문입니다.) 이것은 내가 아주 작은 규모로 뭘하는지 더 이하 :보기의 열 유형 및 크기를 정의 할 수 있습니까?

CREATE VIEW vw_pendingitems 
AS 
    SELECT 
     CAST(a.columnone AS CHAR(1)) 'Column 1', 
     CAST(a.columntwo AS CHAR(1)) 'Column 2', 
     CAST(a.adecimalcolumn AS VARCHAR(30)), 
     CAST(null AS VARCHAR(20)) 'A not yet defined column', 
     b.anintcolumn 'An int column' 
FROM table1 a 
JOIN table2 b ON a.key = b.key 

처음 두 열이 잘 작동하고 있습니다,하지만 난 널 캐스팅 때이 문제를 치는 것 같아요. 성취하려는 일을하는 다른/더 좋은 방법이 있습니까?

+0

마감 기한이 누락되었습니다. –

+0

네, 고맙습니다. :) – Logan

+0

@LoganDam :'a.adecimalcolumn'에서 null이 발견되면 어떻게 될까요? 현재 어떤 오류가 발생하고 있습니까? –

답변

0

CAST은 Nullable 열과 함께 정상적으로 작동해야합니다. 그냥 NULL을 반환합니다. NULL을 원하지 않으면 ISNULL을 사용할 수 있습니다.

SELECT ISNULL(CAST(NULL AS VARCHAR(20)), '') 'A not yet defined column' 

데이터 유형을 변경하는 데주의해야합니다. 더 작은 데이터 유형을 사용하면 데이터가 손실되거나 오류가 발생할 수 있습니다.

+0

지금은 문제가 없습니다. nulls와 관련된 오류가 발생했지만, 분명히 죽는 int로 'NAD'와 같은 문자열을 돌리려는 시도였다. 나는 데이터 손실에 대해서도 걱정하지 않는다. 내 경우에는 그렇게해야한다. – Logan