수고 많으십니다
초보적인 것 같은데
SELECT-OPTIONS 로 설비 내역을 받아서
해당 설비를 찾는 쿼리를 하는데
설비 내역에 Blower 라는 내역이
현업에서 BLOWER , blower, Blower 이런식으로 대소문자가 막 섞여서
입력을 했는데 이걸 *blower* 라고 쿼리하면 소문자로 된것 만 가지고 오고
대문자로 넣으면 대문자만 가지고 오고 이런 식이네요
아예 대문자거나 소문자라면 쉬울텐데 섞여 있어서 잘 안되네요
혹시 이걸 대소문자 구분없이 가지고 오게 할 수 있는 방법이 없을까요???
좋은 방법이 있으면 좀 알려주세요~^^
댓글 8
-
헐크호간
2009.08.26 22:34
-
StoryGuy97™
2009.08.26 22:44
일단 데이터 받아서 translate 로 대문자 변경한 후에 걸러내믄 될듯. -
JG
2009.08.26 23:40
현 상태에서 보면 대/소문자 구분이 필요가 없을거 같은데...
현업에서 대/소문자 상관이 없다면..
테이블에 넣는 부분에서 대문자로 변경하는 로직을 심으시구요 (혹은 소문자)
Table에 들어가 있는 건들은 모두 대문자로 변경하는 작업을 하시는게 좋을 듯 싶습니다. (혹은 소문자)
쿼리로 조회 시에는 대문자 변경을 해서 찾으시면 되겠죠. (혹은 소문자)
-
꼬꼬마정수기
2009.08.27 00:55
혹시 native sql 쓰면 어때요?
오라클 쓰신다면
SELECT *
FROM 테이블명
WHERE LOWER(필드명) = 'browser'
일케 하시면 되실텐데요...
-
요요
2009.08.27 01:07
흠.. 쿼리로는 안되겠지만 FIND 를 활용해 보시는 것은 어떠실지요?
아래 예제를 실행하시면 조회 문자열은 now 이지만 Now 도 조회되실 거예요.
좀 아닌것 같지만 그나마 좀 나을 것 같아서요. ^^;;
텍스트 필드를 탐색하시는 거라 인덱스를 태우는 것은 힘들것 같구요.
일정범위 데이터를 가져올 수 있는 로직만 세울 수 있다면 좀 나을 것 같네요.
좋은 결과 있으시길 바랍니다.
DATA: patt TYPE string VALUE `now`,
text TYPE string,
itab TYPE TABLE OF string,
result_tab TYPE match_result_tab.
APPEND 'Everybody kNows this is nowhere' TO itab.
APPEND 'Everybody knows this is nowhere' TO itab.
FIELD-SYMBOLS <match> LIKE LINE OF result_tab.
FIND ALL OCCURRENCES OF patt
IN TABLE itab
IGNORING CASE
RESULTS result_tab.
LOOP AT result_tab ASSIGNING <match>.
WRITE: / <match>-offset, <match>-length.
ENDLOOP. -
woong
2009.08.27 01:26
모두 너무 답변해 주셔서 너무 감사합니다~^^
역시 많은 분들의 아이디어가 모이니 여러가지 방법이 있군요.
제가 바보 같이 설비내역 테이블에 'EQKTU : 대문자로 된 설비내역' 이 있는 걸 못보고
이런 고민을 했네요.
다음번에 이런 문제 생겼을때 많은 도움이 될것 같습니다
모두 수고하세요~
-
헐크호간
2009.08.27 02:25
내말이 맞았다..아싸~~ -
nana
2010.03.11 06:22
native sql 사용이 제일 좋은것 같아요...
들어 있는 변수값을 수정할 필요도 없고, 입력받는값 그대로 사용할 수 있으니까요....
EXEC SQL.
SELECT zfword
INTO :l_zfword
FROM zmmtword
WHERE upper(zfword) = upper(:gt_base-zfword)
AND zfcls = :gt_base-CLASS
ENDEXEC.
도메인에 대소문자 구분하게 되어있어서 그래요..
SE11에서 도메인으로 XUNAME1 조회해보면...
DEFINITION 텝에 LOWER CASE 에 'X' 찍혀있습니다.. 대소문자 구분하겠다는거죠..
설비내역에 해당하는 도메인 보면 'X' 찍혀있을겁니다.
테이블을 그렇게 만들었다는건 대소문자를 구분하겠다는의도로 만들었을텐데요...
BLOWER나 blower 만 있는것이 아닐테고,,
첫번째문자가 대문자인경우, 두번재문자가 대문자인경우, 세번재문자가 대문자인경우..이렇게 따지면..
BLOWER 만가지고도 64가지가 나오는데요...
WHERE조건에 다 넣어주는건 무식한 짓 같고...
제생각에는 테이블을 바꾸지 않으면 힘들것 같고요..
만약 저라면 테이블에 필드 하나를 추가해서..
대소문자만 구분하지 않는 똑같은 필드를 하나 추가해서.. 읽을때만 새로 추가한 필드를 읽어오면 어떨가 싶네요..
고수님들의 현명한 다른 방법을 기대합니다.. ^^