728x90

사용 프로그램

Oracle 11g & SQL Developer

 

메세지

ORA-00979: GROUP BY 표현식이 아닙니다. 00979. 00000 - "not a GROUP BY expression"

 

상황

아래 쿼리를 조회하려다 발생

SELECT E.EMP_NO, E.EMP_NM, COUNT(E.EMP_NO)
FROM EMP_C E
    JOIN FAM_C F ON(E.EMP_NO = F.EMP_NO)    
WHERE REL_TYPE_CD = 'A27'
GROUP BY E.EMP_NO; -- 인출행 수 1239

 

원인

조회할려는 컬럼이 그룹바이로 지정이 안됐기에 에러 발생

GROUP BY문에 들어가 있는 컬럼명들 중에 SELECT문에 안들어가도 있어도 에러발생X

반대로, GROUP BY문에 없는데 SELECT문에서 들어가있는 컬럼명이 있다면 에러발생O

 

해결

GROUP BY E.EMP_NO에 추가로 E.EMP_NM 컬럼 추가

E.EMP_NM이 조회할려던 컬럼

즉, 조회할려는 컬럼이 그룹바이로 지정이 안됐기에 에러 발생

SELECT E.EMP_NO, E.EMP_NM, COUNT(E.EMP_NO)
FROM EMP_C E
    JOIN FAM_C F ON(E.EMP_NO = F.EMP_NO)    
WHERE REL_TYPE_CD = 'A27'
GROUP BY E.EMP_NO, E.EMP_NM; -- 인출행 수 1239

 

728x90
반응형
728x90

 

 

정규표현식(RegularExpression)

정의

내가 사용하고자하는 원하는 패턴에 맞는 값을 확인하는 것

유효한 식인지 적당한 값인지 확인하는 패턴

특정 패턴의 문자열을 찾기위한 표현방식

 

 

자주 쓰는 사용처

회원가입

id,pw등 값을 쓴다고 했을 때

아이디를 1을 넣었을 때 5-20자 영문특문만 가능

이미 사용 중이거나 탈퇴한 아이디

쓸 수 없는 기호 걸러줌

  • 쓸 수 있는 아이디와 없는 아이디 걸러주는 역할
  • 표현식을 만들어서, 유효한 식인지 적당한 값인지 만들어보는 것

 


 

정규표현식의 객체 생성

방법1 : new 연산자 사용

방법2 : 스크립트 작성

 

방법1 : new 연산자 사용

var regExp = new RegExp('script');  // 정규식 객체 생성 : ' '
var regExp = new RegExp(/script/);  // 정규식 객체 생성 : / /

 

방법2 : 스크립트 작성

정규식 생성하겠다 의미 내포한 변수 생성

new와 소괄호 없이 정규식 객체 생성

var regExp =  /script/;

 

단순 변수 생성한 것

위에서 정규식의 객체를 생성한 / /랑 다르다

var regExp =  'script';  // 그냥 변수 생성 // 위의 / /랑 다른 슬래시

 

 

 

정규표현식에서 자주사용하는 메소드

test()

해당글자가 존재하면 true 존재하지 않으면 false

console.log(regExp.test(str));  // true

 

exec()

존재여부확인, 해당글자가 없으면 null 있으면 정보배열(index,input)반환

console.log(regExp.exec(str));  // ['script', index: 4, input: 'javascript jquery ajax', groups: undefined]
                                //  <- 해당글자가 있어서 정보배열반환

index랑 input 반환하는 기준 비교하고자하는 값이 스크립트 몇번째에서 나타나냐? 01234에서부터 나타나는 script

index = index번째

input = 어디에서

 

 


 

 

String의 메소드

정규표현식 외에도 str에서 많이 쓰는 메소드로도 비교함

정규표현식 메소드가 있으니까 정규표현식 메소드만 쓰기 보다 다양하게 활용가능하다

 

match()

== exec() 결과가 exec와 같음. str의 메소드도 충분히 활용 가능

console.log(str.match(regExp));

 

str.replace()

해당글자를 지정한문자로 바꿔줌

console.log(str.replace(regExp,'스크립트'));

 

 

728x90
반응형

+ Recent posts