스키마구성을 CHAR 형으로 하면.. 30보다는 9가 더크게나옵니다..
그래서 스키마구성을 INTEGER형으로 했을경우.. 검색자체가 안되더군요..
숫자를 기준으로 <,>,= 검색이 가능하게 하는 방법을 알고싶습니다...~~
도와주세요...~~
무슨 LDAP을 사용하시나요?
SunONE에서 스키마로 했을때 잘 되었습니다.
그런데 한가지 버그가 있더군요.
>, <는 안되고 >= <=는 되더라고요
필터는
test <= 21
ldap_search_s(ld, "c=kr", 2, "test <= 21", NULL, 0, &msg)Result <0>: (null)Matched DNs: Getting 3 entries:>> Dn: cn=sjsong,c=kr 1> test2: 0; 1> test: 0; 1> cn: sjsong; 2> objectClass: top; song; >> Dn: cn=song1,c=kr 1> cn: song1; 2> objectClass: top; song; 1> test: 1; 1> test2: 1; >> Dn: cn=song3,c=kr 1> test2: 9; 1> test: 9; 1> cn: song3; 2> objectClass: top; song;
버그가 아니구 rfc를 따르다 보니 그런것 같습니다. rfc2254 일부분 발췌했습니다. ldap search filter를 정의하는 rfc입니다.
filter format uses a prefix notation.
filter = "(" filtercomp ")" filtercomp = and / or / not / item and = "&" filterlist or = "|" filterlist not = "!" filter filterlist = 1*filter item = simple / present / substring / extensible simple = attr filtertype value filtertype = equal / approx / greater / less equal = "=" approx = "~=" greater = ">=" less = "<=" extensible = attr [":dn"] [":" matchingrule] ":=" value / [":dn"] ":" matchingrule ":=" value present = attr "=*" substring = attr "=" [initial] any [final] initial = value any = "*" *(value "*") final = value attr = AttributeDescription from Section 4.1.5 of [1] matchingrule = MatchingRuleId from Section 4.1.9 of [1] value = AttributeValue from Section 4.1.6 of [1]
iplanet Directory 5.0에서는 되었던것으로 기억되서....