2014-12-04 3 views
0

며칠 동안 작업을 해왔으며 해결하지 못했습니다. 기본적으로 전 슬래시가 있기 전에 필드에서 반환 자릿수가 필요합니다. 예 : 필드가 1234/TEXT이면 1234를 반환하고 싶습니다. 왼쪽 필드 이름 4를 사용할 수 없습니다. 12345/TEXT이므로 슬래시 왼쪽에 아무 것도 입력해야합니다. IBM의 \ DB2 시스템에 사용되는이, 어떻게 변환합니까 그것은 그러나 DB2 SQL 왼쪽에/

Left(TABLE!FIELD,InStr(1,TABLE!FIELD,"/")-1) 

작동 - 이제 MS 액세스의 세계에서,이 같은입니까? DB2 SQL은 '일반적인'SQL과 다소 다르게 보입니다.

감사합니다.

+1

MS Access는 "일반 SQL"이라고 부르십니까? 정상적인 SQL에서는 테이블 열을'TABLE! FIELD'이 아닌'TABLENAME.COLUMNNAME'으로 참조합니다. – mustaccio

답변

0

오히려 INSTR보다 아마도

는 (문자 스트링)를 찾으 LOCATE

CHAR는 검색어 문자열 SUBSTR으로 LOCATE 조합하여

+0

'INSTR' 함수는 최근 DB2 버전에서 사용할 수 있습니다. – mustaccio

0

이 작업을 달성 할 수 검색되는 문자열이고;

Locate information

(이 예)

Substring information

치트 시트;

SUBSTRING('FIELD','START POSITION', 'LENGTH') 
LOCATE('SEARCH STRING', 'SOURCE STRING') 

SUBSTRING은 즉 문자열에서 특정 문자를 검색 할 수 있습니다;

AFIELD = 'Hello' 
SUBSTRING(AFIELD,4,2) 

결과 = "LO"(4 위치 및 헬로 5)

되돌림 즉 그것이 수로 발견 검색 문자열의 선두 문자의 위치를 ​​찾을;

AFIELD = 'Hello' 
LOCATE('ello', AFIELD) 

결과 = 2

그래서 당신은, 예를 들어 원하는 일을하기 위해 이러한 결합 할 수 있습니다 (이 위치 2에서 시작)

XTABLE에는 ACOL이라는 열과 다음 값이 들어 있습니다.

123467/ABCD 
1321/ABDD 
1123467/ABCD 

숫자를 검색하면됩니다.

SELECT SUBSTRING(ACOL,1, LOCATE('/',ACOL)-1) 
FROM XRDK/XTABLE 

결과;

123467 
1321 
1123467 

우리는 무엇을하고 있습니까?

SUBSTRING(
ACOL, 
1, 
LOCATE('/',ACOL)-1 
) 

SUBSTRING(
Field ACOL, 
Starting at position 1, 
Length; using locate set this to where I find a '/' and subtract 1 from the 
resulting postion (without the -1 you'd have the/on the end) 
) 
+0

2014 년에 이것이 물어 봤음을 알게되었습니다. 결국에는 효과가 있었기를 바랍니다. – RDKells