2013-05-03 3 views
1

저는 SQL에 익숙하지 않으므로 아마도 사소한 질문 일 것입니다. 직원 번호 필드에 제공된 값이 인 경우SQL IF 값이 같음

난 내가에만 수행되어야 할 직원 테이블에 입력 값에 대한 절차를 ‘e01, e02 .. e98, e99’

유사한 형식으로 직원 번호를 저장하고있어 위에 표시된 것과 같은 형식입니다.

내가 시도

..

CREATE PROCEDURE new_staff (IN e_id employee ids, 
       …., 
       ….,etc) 
BEGIN 
IF e_id not like 'e__' 
    THEN /* fail*/ 

ELSE /* insert record*/ 
END 

내가 값 'e9999'을 사용하여이 테스트하고 오류를 인식하지 않았다, 그것은 대신 값 'E99'을했다. 어떤 도움이라도 대단히 감사 할 것입니다.

많은 감사

-Edit- 죄송합니다 - 물건을 취소합니다. SQL Anywhere를 사용하고 있으며 가능한 최대 직원 ID를 e99로 지정합니다. 내 논리는 e__ (밑줄 두 개)과 같이 사용하면 e100 이상을 입력 할 수 없게됩니다.

+2

SQL Server를 사용하고 있습니까? 그리고 전체 SQL 스크립트 코드를 게시하십시오. –

+0

'오류'로 무엇을 의미하는지 명확하게 설명하십시오. 나는 이것이 약간 불분명하다고 생각한다. –

+0

죄송합니다 - 일을 정리하십시오. SQL Anywhere를 사용하고 있으며 가능한 최대 직원 ID를 e99로 지정합니다. 내 논리는 'e__'(두 개의 밑줄)을 사용하면 e100 이상을 입력 할 수 없게된다는 것입니다. –

답변

1

편집 : 더 들어

IF e_id like 'e[0-9][0-9]' 
    THEN 
    /* insert record*/ 
ELSE 
    /* fail*/ 
END 

: 당신은 와일드 카드 숫자 만하고 싶다면

이 하나를 시도, 그것을

IF e_id like 'e__' 
    THEN 
    /* insert record*/ 
ELSE 
    /* fail*/ 
END 

라운드 다른 방법을 시도 SQL 와일드 카드에 대한 정보는 link을 참조하십시오.

+0

"값 'e9999'을 사용하여 이것을 테스트했지만 오류를 인식하지 못했습니다. 따라서'e9999'는 오류 여야하므로 'e %'는 _wrong_입니다. –

+0

e_id가 'e'로 시작하면 그는 실패하고 싶다고 생각합니다. 다음 번호가 얼마나 길든간에. –

+0

나는 원래의 포스터가 아니다. 질문에 대한 의견을 말하십시오. 그리고 나는 동의한다, 질문은 정말로 분명하지 않다. –

0

에 한번 사용하여 전역 기호 (전자 %) : 값이 < 100 또는 는 문자에 대한 정수와 하나 개의 컬럼을 지원하는 열을 추가하는 경우

CREATE PROCEDURE new_staff  (IN e_id employee ids, 
     …., 
       ….,etc) 
BEGIN 
IF e_id not like 'e%' 
    THEN /* fail*/ 

ELSE /* insert record*/ 
END 
+0

Obl의 오답과 다른 점은 무엇입니까? 나에게 잘못한 것처럼 보인다. –

0

구문 분석의 모든 것을 'E'후 참조 접두어 - e 접두어가 무언가를위한 코드이고 그것이 e 이외의 것이 될 수 있다고 가정합니다. 값을 반환하면 접두사가있는 문자열을 만들고 정수의 문자열 표현을 추가합니다.

+0

나는 일년 후 이것을보고있다. 나는 그것에 대한 조언을 받았다. 우리 회사의 직무 구조는 M [yy] - [###]입니다. 여기서 M은 직무이며 yy는 연도의 마지막 두 자리이며 ###은 해당 연도의 선형 직무입니다. 잘됐다. – ThatGuy