# MSSQL - LEN ( ) 함수


1. LEN () 역할


   - 문자열의 길이를 계산하여 반환해주는 역할의 함수

   - 비슷한 역할의 함수로 datalength() 함수가 있는데 , datalength는 문자열의 byte 수를 반환한다.

      (참고로 한글은 한 자에 2byte)


   - 아래는 예시로 함수를 사용해 본 결과 캡쳐이미지다.

   

  




__________________________________________________________________________________________________________________________________________________________

** 본 포스팅에 대해 수정해야할 부분이나 추가 의견 등이 있으신 분들은 댓글 달아주세요. 언제나 환영입니다 :) 

** 본 포스팅을 reference 자료로 참고하실 분들은 출처를 꼭 밝혀주시기 바랍니다.




'Database > MSSQL' 카테고리의 다른 글

MyBatis + MSSQL 사용 시 LIKE 구문  (0) 2017.02.26
MSSQL - Numeric() 소수점 자릿수 지정 함수  (0) 2017.02.26

# MyBatis + MSSQL 사용 시 LIKE 구문


MariaDB (MYSQL 문법) 쓰다가 MSSQL 을 써보았는데, LIKE 구문 작성 형식이 달라 처음에 읭?? 했었다.

다른 쿼리에서 에러난 줄 알고 한참 보고있었는데, 결국 에러 원인은 LIKE 구문이었다 ㅎㅎ. 미세하게 다르다.


1. MyBatis + MariaDB 사용 시 LIKE 구문


 USERNAME  LIKE '%' #{USERNAME } '%'



2. MyBatis + MSSQL 사용 시 LIKE 구문 

   

   - 동적으로 받아오는 입력값 양옆으로 + 를 붙여줘야 한다.


 USERNAME LIKE '%' + #{USERNAME} + '%' 



3. 참고


   - LIKE 구문은 문자열 중 해당 문자를 포함하고 있는 문자열을 검색해주는 기능을 한다. 

   - 주로 검색 조건 값을 처리할 때 사용되는 연산자이다.

   - 아래 표는 LIKE 연산자 사용 시 함께 사용되는 와일드 카드들이다.

   

 %

  여러 문자
 _  단일 문자

 [ ]

  [ ]에 속하는 하나의 패턴과 일치하는 단일 문자 

  

  예) LIKE '[0-9][0-9][0-9]%';

      결과--> 앞의 세글자가 각각 숫자인 것을 찾아냅니다.

 [^]

  [ ] 에 속하는 패턴에 포함되지 않는 단일 문자



__________________________________________________________________________________________________________________________________________________________
** 본 포스팅에 대해 수정해야할 부분이나 추가 의견 등이 있으신 분들은 댓글 달아주세요. 언제나 환영입니다 :) 
** 본 포스팅을 reference 자료로 참고하실 분들은 출처를 꼭 밝혀주시기 바랍니다.

 


'Database > MSSQL' 카테고리의 다른 글

MSSQL - LEN() 문자열 자릿수 반환  (0) 2017.02.26
MSSQL - Numeric() 소수점 자릿수 지정 함수  (0) 2017.02.26

# MSSQL - Numeric(p,s) 함수


1. 역할


   : 소수점 자릿수를 지정하는 함수

   : 파라미터 p는 소수점 이하 자리를 포함한 총 자릿 수 이며, s는 소수점 이하 자릿 수 만을 의미한다.

   : s 를 생략하면 default 로 0으로 설정된다.

 

2. Example


   : AVG_PAY AS Numeric(6,2): AVG_PAY라는 필드의 값을 소수점 이하 두 자리로, 소수점 이하 두자리 포함 전체 6자리의 수까지만 허용하겠다는 뜻.

   : Numeric (6,2) 의 결과로 올 수 있는 숫자들로는 5,200.50 / 240.38 / 9,900.99  등이 있다.



'Database > MSSQL' 카테고리의 다른 글

MSSQL - LEN() 문자열 자릿수 반환  (0) 2017.02.26
MyBatis + MSSQL 사용 시 LIKE 구문  (0) 2017.02.26

진행하고 있던 프로젝트에 MyBatis를 적용하다가 에러가 나서 정리해 둔다.


발생한 에러는 아래와 같다.


* 에러 메세지


 심각: Servlet.service() for servlet [action] in context with path [/xxx] threw exception [Request processing failed; nested exception is        

        org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 

        ### Error querying database.  Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for 

        xxxMapper

        ### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for 

        [xxxMapper] with root cause

       java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for 

        xxxMapper

 ** 위의 메세지 중 프로젝트 명이 표기되는 부분은 xxxMapper로 바꾸어 표기했다. 



* 원인


    : 위와 같은 에러가 발생할 경우 아래와 같이 여러 원인이 존재할 수 있다고 한다. 

     (1) mapper id가 틀린 경우

     (2) Parameter와 bean의 field명이  틀린 경우

     (3) sql.xml에서 정의된 namespace와 DAO에서 호출하는 namespace가 다를 경우

     (4) mapper가 정의가 되어 있지 않거나 Spelling이 틀린 경우

     (5) mapper에 정의된 namespace 명칭이 같은 Application 내에 중복 될 경우



* 해결


   : 나의 경우엔 4번이 원인이었다. Mapper 파일 명시 할 때 대소문자 구분을 하지 않아 mapper 파일을 못찾으면서 발생한 에러였다.

   : mapper 파일 명시했던 설정 파일 보면 mapperLocation 속성에 *_maria.xml 파일이라 명시되어 있다.


     -->  context-datasource.xml 파일 내 설정(AS-IS)


  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

      <property name="dataSource" ref="dataSource" />

      <property name="configLocation" value="classpath:/mybatis/mybatis-config.xml" />

      <property name="mapperLocations">

   <value>classpath:/mapper/**/*_maria.xml</value>

      </property> 

  </bean>



    : 해당 mapper 파일은 실제로 *_Maria.xml 파일이기 때문에 대소문자 수정이 필요하다 ㅎㅎㅎㅎ 이런 실수는 다음엔 하지 말기


   

  <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

      <property name="dataSource" ref="dataSource" />

      <property name="configLocation" value="classpath:/mybatis/mybatis-config.xml" />

      <property name="mapperLocations">

   <value>classpath:/mapper/**/*_Maria.xml</value>

      </property> 

  </bean> 


   : 위와 같이 오타를 수정하고나서 다시 돌려보니 이제 제대로 mapper 파일을 찾았다 ㅎㅎ 


    내경우 말고도 위의 에러 원인 가능한 5가지 경우는 주의해야겠다. 



__________________________________________________________________________________________________________________________________________________________

** 본 포스팅에 대해 수정해야할 부분이나 추가 의견 등이 있으신 분들은 댓글 달아주세요. 언제나 환영입니다 :) 

** 본 포스팅을 reference 자료로 참고하실 분들은 출처를 꼭 밝혀주시기 바랍니다.


  


+ Recent posts