2014-10-21 2 views
0

SQLSERVER 2008에서 select에 문제가 있습니다.sqlserver는 subselect를 사용할 때 char 데이터를 자릅니다.

저는 char (32) 열이 PK 인 테이블을 가지고 있습니다. 이 표에서 선택할 때마다 pk 결과에는 데이터가 32 자 미만인 경우에도 항상 32자를 포함합니다. I.E : (공백으로 점 바꾸기) 'id1 .....................').

하지만 다른 테이블에서 데이터를 선택하고 해당 ID를 사용하여 하위 선택하면 데이터가 잘립니다.

예제 코드 :

이 쿼리는 ID 데이터 대신 'ID1의 ('ID1 '손질 얻을 것이다
select id, 
(select description from othertable where othertable.id = mytable.id) as description 
from mytable 

.................... ... ').

이 문제를 일으키는 원인이나 피해야 할 방법에 대한 정보를 찾지 못했습니다.

이 문제는 SQLSERVER의 특정 스키마에서만 발생하는 것으로 보이며 오라클이나 다른 엔진에서는 발생하지 않습니다.

+1

데이터 무엇입니까 'othertable'에'description '유형이 있습니까? – DavidG

+0

다른 char과 동일합니다. (32) – panietoar

답변

0

당신의 ANSI_PADDING이 문제가 해결되지 않으면, 당신은 공간을 추가 할 쿼리를 변경할 수 있습니다

SET ANSI_PADDING (Transact-SQL)

'참'으로 설정되어 있는지 확인 다시

select LEFT(id + SPACE(32),32), 
(select description from othertable where othertable.id = mytable.id) as description 
from mytable 
+1

'othertable.description'이'char'보다는'varchar'이고, 그러므로 그 사람에게 제 질문을 던지면 관련이 없습니다. – DavidG

+0

그래서 내가 변경된 쿼리를 추가했습니다. – ChrisStillwell