2010-07-20 6 views
0

누군가가 SQL 서버 CAST에서 text 데이터 형식으로 나를 도울 수 있습니까? 나는 CAST 함수를 사용하여 표시 할 긴 텍스트를 가져 오려고하지만 두 개 이상의 테이블에서 검색하는 경우 작동하지 않습니다. 어쩌면 문장을 잘못 작성했을 수도 있습니다.텍스트 데이터 형식에 캐스팅 된 SQL Server

$from = 'RealEstate AS RE, Models AS M, Catalogue AS C'; 

$select = 'CAST(RE.Details AS TEXT) AS RE.Details, RE.Postcode, RE.Suburb, 
    M.ModelName, M.ModelID, RE.HouseID, RE.ContactName, RE.ContactPhone, RE.PlanName, 
    RE.Address, RE.Street, RE.Price, RE.StreetNo, RE.CatID, RE.Fixed'; 


$query = mssql_query("SELECT DISTINCT $select 
         FROM RealEstate AS RE, Models AS M 
         WHERE RE.HouseID=$hid 
         AND RE.ModelID=M.ModelID"); 
+0

구체적으로 표시되는 오류 메시지는 무엇입니까? 그리고 왜 정확히 텍스트로 변환하고 있습니까? 이미 저장된 문자 수를 늘리는 것과는 다릅니다. 그리고 명시 적 조인을 사용하는 법을 배우십시오. 암시 적 조인은 오류가 발생하기 쉽고 유지 관리가 어려우며 코딩 기술이 매우 열악합니다. – HLGEM

답변

0

나는 확신 별칭 기간 (: RE.Details 범죄자)를 포함 할 수 없습니다입니다. 대신 Details으로 전화 해보십시오 (또는 기간을 유지하려면 별칭을 따옴표로 묶으십시오 (mysql의 경우 backticks).하지만 그렇지 않다고 추측합니다).

+0

테이블 모델과 RealEstate의 $는 모두 동일한 "세부 정보"필드를 전달합니다. 그래서 RealEstate 테이블에서 세부 정보 만 호출하는 기간을 사용했습니다. 시간을 가져가는 것이 옳습니다. 그것은 하나의 테이블에서 작동하지만 다시 작동하므로 RealEstate AS RE 호출을 수행 할 필요가 없습니다. 그러나 이것을 이중 쿼리로 만들 수는 있지만 가능한 한 짧게하려고합니다. – Honshi

+1

@ Honshi : 열 별칭이 아닙니다. 예를 들어 내 쿼리를 참조하십시오. "re.details"라는 열을 실제로 볼 필요가 있다면, 백틱은 MySQL에서만 작동합니다. ANSI 표준은 큰 따옴표를 사용합니다. –

+0

@OMG Ponyies 코드를 시험 중입니다. 그래도 작동이 안되는. 나는 테이블이 대소 문자를 구분한다고 생각 했단 말인가? 그래서 모든 코드를 올바른 케이스로 변환했지만 여전히 작동하지 않습니다. 귀하의 제안에 감사드립니다. – Honshi

1

제 생각에 mssql_query 블록 내에서 문자열을 연결할 수 없다는 점을 이해합니다. 귀하가 제공 한 것에 기반하여 실제로 그 필요성을 알 수는 없습니다. 동적 SQL 문을 연결하려면 mssql_query 함수에 문을 보내기 전에 등을 수행

$select = 'SELECT DISTINCT CAST(re.details AS TEXT) as details, 
             re.postcode, 
             re.suburb, 
             m.modelname, 
             m.modelid, 
             re.houseid, 
             re.contactname, 
             re.contactphone, 
             re.planname, 
             re.address, 
             re.street, 
             re.price, 
             re.streetno, 
             re.catid, 
             re.fixed 
           FROM REALESTATE re 
           JOIN MODELS m ON m.modelid = re.modelid 
           WHERE re.houseid = $hid" 
$query = mssql_query($select); 
+1

@ Honshi : 테이블 이름은 대소 문자를 구분하지 않습니다. 대문자는 코딩 스타일입니다. 실패 세부 사항이 없으면 나는 당신을 도울 수 없다. –

0
$queryDetails = mssql_query("SELECT CAST(Details AS TEXT) AS Details FROM RealEstate WHERE HouseID=$hid"); 

내가 그것에서 다른 쿼리를했다. 그 아마 중복 전화. 나는 msSQL에 익숙하다. msSQL을 사용하고 나면 조작하기가 번거로웠다. 특히 페이지 매김에 LIMIT 기능을 사용할 수없는 경우 특히 그렇습니다.

관련 문제