본문 바로가기

SQL6

[MSSQL]datetime타입의 컬럼에 Null값을 Insert할 때 1999-01-01이 들어가는 현상과 해결법 🔍 현상 NULL을 허용하는 VALIDITY_DATE 컬럼에 데이터 값을 입력하지 않고 저장을 시켰는데 위와 같이 1900-01-01데이터가 삽입되었다. 💡 해결 처음엔 ISNULL로 해결을 해보려고 했으나... 1900-01-01이 들어가는건 마찬가지여서 IFNULL을 사용해 해결했다. INSERT INTO T_TEMP_TABLE ( MAIN_CD , VALIDITY_DATE . . . ) VALUES ( #{mainCd} , IIF(#{validityDate} = '', NULL, #{validityDate}) . . .) select 할때도 datetime타입의 데이터가 NULL인경우에는 1900-01-01가 뿅 튀어나와서 애를 먹었었는데 이 부분은 따로 정리를 해야겠다. 2024. 1. 10.
[MSSQL] ISNULL과 NULLIF ISNULL과 NULLIF 💡 ISNULL - NULL을 지정된 대체 값으로 바꿈. ISNULL(A, B) : A가 NULL일경우 B를 출력 SELECT ISNULL(NULL, 5) AS A_NULL, ISNULL(4, 5) AS A_NOT_NULL; https://learn.microsoft.com/ko-kr/sql/t-sql/functions/isnull-transact-sql?view=sql-server-ver16 ISNULL(Transact-SQL) - SQL Server ISNULL(Transact-SQL) learn.microsoft.com 💡 NULLIF - 지정된 두 식이 같으면 NULL값을 반환. NULLIF(A, B) : A, B가 같으면 NULL값을, 같지 않으면 A를 반환 SELEC.. 2024. 1. 6.
[MySQL] 문자열 합치기 - CONCAT 이번에 사용자가 날짜 데이터를 년-월 로 입력시키면 DB에는 년-월-01로 INSERT시켜야하는 경우가 있어서 사용했던 CONCAT을 정리해보려고한다. CONCAT TEMP_TABLE이 다음과 같고 GREETING NAME 안녕하세요 까부 반갑습니다 깨부 Hello 깐부 아래와 같이 쿼리를 작성해주면 SELECT CONCAT(GREETING, '! 저는 ', USER_NAME, '입니다.') AS USER_GREETING FROM TEMP_TABLE 다음과 같은 결과가 나온다. USER_GREETING 안녕하세요! 저는 까부입니다. 반갑습니다! 저는 깨부입니다. Hello! 저는 깐부입니다. 2023. 11. 16.
[MySQL]특정 값을 조건에 따라 변경해서 출력하기 - CASE문 우선 테이블은 다음과 같다. TEMP_CD STATUS 100001 10 100002 00 100003 10 100004 20 100005 00 CASE WHEN THEN 문 사용하기 아래와 같이 쿼리문을 작성해 주면 SELECT TEMP_CD , CASE STATUS WHEN '00' THEN '신규' WHEN '10' THEN '등록완료' WHEN '20' THEN '승인대기' END AS STATUS FROM TEMP_TABLE 이런 결과가 출력된다. TEMP_CD STATUS 100001 등록완료 100002 신규 100003 등록완료 100004 승인대기 100005 신규 이를 정리해 보면 다음과 같다. SELECT TEMP_CD , CASE 컬럼명 WHEN 조건1 THEN 조건1 성립시 값 W.. 2023. 11. 15.
[DB] 키 값, 유일한 값, 고유한 값 만들기(Identity 값, MAX + 1, ROW_NUMBER()) 데이터베이스 테이블에 키 값이나 유일한 값을 넣을 때 사용하고 있는 방법들을 정리해보았다. 상황에 따라 더 효율적인 방법을 사용해야 하기때문에 긴가민가 할때에는 선배들에게 조언을 구한 뒤 사용한다. 개발 경험과 공부가 더 필요할 것 같다. Identity 값 주로 primary key역할을 하는 컬럼에 할당되는 값으로 새로운 레코드가 추가될 때마다 자동으로 증가하는 고유한 값을 생성한다. 우리는 기본키로는 사용하지 않고, 그리드에 뿌려 특정 행을 잡을 때 사용한다. DB마다 상이한 채번룰을 사용하는데 몇개의 예시를 들어보자면 아래와 같다. MySQL CREATE TABLE temp_table ( ID INT AUTO_INCREMENT PRIMARY KEY ); MSSQL CREATE TABLE temp_.. 2023. 11. 3.
[MSSQL] IN절을 사용해 데이터 출력하기 - 잘못된 사용자 데이터 추출 전체 데이터 중 특정 정보(데이터)가 입력되지 않은 데이터만을 출력하는 일을 받았다. 고객사의 IT 관리자가 필요한 사용자정보를 입력하지 않은 사용자들을 파악해 관리하기 위함이었다. 메인화면의 카드를 통해 해당 페이지에 들어가게 되면 전체 사용자 정보 중에서 필요한 사용자 정보를 입력하지 않은 데이터만 출력하는 방식이다. 페이지를 새로 제작하는 것이 아니라 조건에 따라 보이는 데이터를 변경해줘야 했고, 기존 화면에 존재하는 데이터들은 영역별/그리드 별로 쿼리를 따로 불러와 출력하는 상황이었기 때문에 고민을 많이 했다. 우선 필요한 사용자 정보를 입력하지 않은 데이터(이하 에러 데이터)를 가져오는 조건을 부여하기 위해 검색조건에 errorYn이라는 필드를 추가했다. 카드를 클릭해서 해당 페이지에 접근하게 .. 2023. 10. 27.
728x90