본문 바로가기
728x90
반응형

MSSQL7

[MSSQL] 프로시져(SP)에서 반환하는 테이블유형의 데이터를 임시테이블에 담아서 사용하기 --프로시져에서 반환한 테이블이형식의 정보를 담을 임시테이블을 선언한다. --형식은 프로시져에서 반환하는 데이터값과 동일하게 맞추어준다. DECLARE @TMP_TABLE TABLE ( NAME VARCHAR(10) AGE INT ) --프로시져를 실행하고 임시테이블에 담는다. INSERT INTO @TMP_TABLE EXEC USP_EMPLOYEE_GET '010-2222-3333' --담은 값 조회 하기 SELECT * FROM @TMP_TABLE 2020. 12. 14.
[MSSQL] SELECT 절에 불필요한 데이터 없애고 가져오기, 가비지데이터 제거 , 공백제거 등 Line Feed : CHAR(10) - 라인피드: 현재 위치에서 아래 라인으로 이동함 Carriage Return : CHAR(13) - 캐리지리턴: 커서의 위치를 앞으로 이동 Tab : CHAR(9) - 키보드에 있는 TAB키의 값입니다. 공백하고는 다르죠 CHAR 에 들어가는 숫자 10, 13, 9는 아스키 코드값입니다. 아스키 코드표 참조 하시면 됩니다. 그래서 SELECT 시 간혹 위 값들이 포함되어 눈에 보이지 않아 오류가 발생할 때도 있습니다. 이때 위 값들을 제거 하고 가져오도록 하는 SELECT 문입니다. SELECT REPLACE(REPLACE(REPLACE(REPLACE( 이름, CHAR(10),''),CHAR(13),''),CHAR(9),''),' ','') FROM 학생 위 SEL.. 2020. 12. 4.
쿼리는 빠른데 프로시져는 느린 현상 해결하기 어플리케이션에서 DB조회 시 느린 경우가 발생했다. 소스에서 해당 프로시져를 찾았고 DB툴에서 그대로 실행해보니 역시나 느렸다 그런데 프로시져 내 쿼리만 따서 조건값 입력하고 조회했더니 겁나 빠른것이다. 해당 프로시져를 DROP 후 다시 생성 했더니 잘 된다. 그러나!! 같은 증상이 계속 발생해서 더이상 안되겠다 싶어서 폭풍 검색 시작! 알아낸 원인은 이렇다. --기존 오류 쿼리 ALTER PROCEDURE [dbo].[usp_상품조회_Get] @상품코드VARCHAR(50) AS BEGIN SELECT * FROM 상품테이블 WHERE 상품코드 = @상품코드 END --오류해결 수정 ALTER PROCEDURE [dbo].[usp_상품조회_Get] @상품코드VARCHAR(50) AS BEGIN DECLA.. 2020. 12. 1.
[MSSQL] 한글/숫자/영문 글자수가 아닌 byte 단위로 문자열 자르기 테이블의 데이터 형식은 정해져 있는데 정해진 용량보다 문자가 클 경우 잘라서 INSERT 해야 한다. 이때 문자 갯수 기준으로 하면 한글과 숫자/영문이 Byte가 다르기 때문에 딱맞게 자를 수가 없다. 이때, 쿼리상에서 String 형식의 값을 문자열로 한글자 자르는 것이 아니라 한글(2byte), 영문/숫자(1byte)로 Byte 단위로 잘라서 INSERT 시킨다. INSERT INTO 주문테이블 (상품명) SELECT CASE WHEN DATALENGTH(상품명) > 200 THEN SUBSTRING(CONVERT(TEXT, 상품명), 1, 198) + '...' ELSE 상품명 END AS 상품명 FROM 상품목록 ※포인트 DATALENGTH 와 CONVERT(TEXT, 상품명) 2020. 11. 9.
728x90
반응형