2011-02-01 2 views
0

I 동적 열 이름을 사용하여 cfquery 등을 구축을 위해 노력 오전 :이 쿼리에서 동적 열 이름을 사용할 수없는 이유는 무엇입니까?

Encountered "MAX (LEN (. Incorrect Select List, 

왜이 일을하지 않습니다 :

<cfquery dbtype="query" name="getColLength"> 
    SELECT MAX(LEN(#ListGetAt(ColumnList, index)#)) 
    FROM query 
</cfquery> 

그러나,이 날 다음과 같은 오류 준다? 나는 <cfoutput> 태그로 #ListGetAt(InputColumnList, 1)#을 둘러 보았지만 그게 도움이되지 못했습니다. 어떤 아이디어?

업데이트 :

이 동적 열 이름에 문제가 될 것 같지 않습니다. 열을 하드 코딩하려고하면 다음과 같은 오류가 발생합니다.

SELECT MAX(LEN(MyColumnName)) 
FROM query 

이 구문에는 어떤 문제가 있습니까?

또한 업데이트 :

이 작동 :

SELECT Max(MyColumnName) 
FROM query 

를이하지 않는 동안 :

Encountered "(. Incorrect Select Statement, Expecting a 'FROM', but encountered '(' instead, A select statement should have a 'FROM' construct. 
:

SELECT LEN(MyColumnName) 
FROM query 

선택 LEN 날이 오류를 제공합니다

SELECT MAX 쿼리를 사용하고 coldfusion len 함수를 사용할 수 있다고 가정 해 봅시다.하지만 왜이 함수가 작동하지 않습니까?

+0

당신이 예를 들어, 도움 않는 열 별칭을 추가하는 경우 : 예를 들어

'MAX (LEN (MyColumnName)) as Foo' –

+0

@Conrad Frix - 아니, 벌써 시도 했어 – froadie

+0

LEN() 대신 LENGTH()라는 단어를 사용해 보셨습니까? LEN()은 CFML입니다. LENGTH()는 SQL 표준입니다. – webRat

답변

0

CF9의 문서는 CHARACTER_LENGTH을 참조합니다. 그러나 이것이 지원되는 기능인지 또는 예약어인지 여부는 명확하지 않습니다. 나는 CF8 설정을 가지고 있는데 LEN과 CHARACTER_LENGTH가 모두 실패하지만 CF9 설정이 있다면 CHARACTER_LENGTH를 시도해보십시오.

레코드 집합의 크기가 확실하지 않지만 그래도 작동하지 않는 경우 쿼리를 통해 간단한 루프를 반복하고 길게 길게 유지할 수 있습니다.

<cfset maxLength = 0 /> 
<cfloop query="recordset"> 
    <cfif len(column) gt maxLength> 
     <cfset maxLength = len(column) /> 
    </cfif> 
</cfloop> 

는 비교 만 할 쓰기에 다음, 큰 레코드에 대한 또 다른 접근 방식은 구조체 키를 사용하는 것입니다 큰 성능 살인자 많은 적은 수의 비교 결과 끝에 고유의 길이를 비교 그러나 때문이다.

<cfset lenStruct = {} /> 
<cfloop query="recordset"> 
    <cfset lenStruct[len(column)] = "" /> 
</cfloop> 
<cfset maxLength = 0 /> 
<cfloop list="#structKeyList(lenStruct)#" index="length"> 
    <cfif length gt maxLength> 
     <cfset maxLength = length /> 
    </cfif> 
</cfloop> 
+1

ACF9 : "CHARACTER_LENGTH가 발생했습니다. 잘못된 선택 목록, 잘못된 선택 열, – webRat

0

방법에 대해 :

SELECT MAX(myLength) 
FROM (
    SELECT LENGTH(MyColumnName) As myLength 
    FROM table 
) 
+0

작동하지 않습니다 :(쿼리 쿼리 문법 오류. 발생했습니다. "(. – froadie

+0

) @froadie - QoQ는 하위 쿼리도 지원하지 않습니다. 레코드 수가 적지 않은 한, db 쿼리 – Leigh

관련 문제