반응형

group 별로 컬럼 내용 합치고 싶을때...

오라클에서는 LISTAGG mysql에서는 GROUP_CONCAT 을 썼었는데...

MSSQL에서는 또 다르다..

 

[TABLE]

ID NAME
ab 사과
ab 포도
cd
cd 곶감
cd 호떡

이런 테이블이 있다고 칩시다.

아래 쿼리를 수행하면 다음과 같이 결과가 나온다. 

SELECT DISTINCT ID
STUFF( (select ','+name from table p where p.id = b.id for xml path('') ),1,1,'') AS NAME2
FROM table B
ID NAME
ab 사과,포도
cd 귤,곶감,호떡

 

 

** STUFF : 문자열의 시작위치와 크기를 지정하여 원하는 문자로 치환
STUFF('[문자열]','[시작위치]','[크기]','[치환문자]')

** FOR XML PATH : 쿼리의 결과 데이터를 XML 형태로 표현

 

반응형
반응형

[MEMBER] 테이블

NAME ID
루피 LUFFY
뽀로로 PORORO
크롱 CRONG
포비 POBY

 

>> 예를 들어 외부에서 이름을 받아 해당하는 이름과 ID를 출력(반환)하는 프로시저를 생성하기 

(한 행만 반환하는 경우)

CREATE PROCEDURE PS_GETID(

@NAME VARCHAR(10) --파라미터로 받을 값

@NAME_OUTPUT VARHCAR(10) OUTPUT, --반환할 값은 OUTPUT을 붙여준다.
@ID VARCHAR(10) OUTPUT 	--반환할 값은 OUTPUT을 붙여준다.

)

AS
BEGIN
SET NOCOUNT ON 

--실행할 쿼리
SELECT @NAME_OUTPUT = NAME, @ID = ID FROM MEMBER WHERE NAME = @NAME FROM MEMBER
--@NAME을 매개변수로 @NAME_OUT과 @ID를 반환하기 

SET NOCOUNT OFF
RETURN
END
--실행을 시켜 생성해준다.

* SET NOCOUNT ON : SELECT, INSERT, UPDATE, DELETE의 영향을 받은 행의 개수를 출력하지 않도록 설정.

 

>> 생성한 프로시저 확인

SP_HELPTEXT PS_GETID

 

>> 생성한 프로시저 수정

ALTER PROCEDURE PS_GETID(

-- 아래 내용은 같되 CREATE만 ALTER로 바꿔주면 됨

 

>> 생성한 프로시저를 사용하여 결과값을 변수에 담기

DECLARE @ID VARCHAR(10) --결과값을 받아올 변수 생성
DECLARE @NAME_OUTPUT VARCHAR(10) --결과값을 받아올 변수 생성

--프로시저 생성. 파라미터와 결과값변수 넘겨주기
--프로시저 결과가 변수에 담긴다.
EXEC PS_GETID 'LUFFY',@ID OUTPUT, @NAME_OUTPUT OUTPUT;


SELECT @ID, @NAME --EXEC 결과 조회

 

>> 프로시저에서 반환한 여러 행을 받을 경우

테이블 변수에 프로시저 결과를 담아 사용한다.

-- 여러 행을 반환하는 프로시저를 만든다.
CREATE PROCEDURE PS_GETTABLE
AS 
BEGIN
	SELECT * FROM MEMBER
END
DECLARE @TEMP TABLE(
	NAME VARCHAR(10),
	ID VARCHAR(10)
) --테이블 변수를 만든다.

-- 프로시저 결과를 테이블변수에 담는다.
INSERT INTO @TEMP EXEC PS_GETTABLE

-- 조회
SELECT * FROM @TEMP

 

여러개의 변수를 프로시저 파라미터로 넘기고 싶은 경우

위와 비슷하게 테이블 변수를 매개변수로 넘겨보자...

반응형
반응형

table에서 특정 행만 출력하기.

예를 들어 아래 테이블에서 2번째 행만 가져오기.

[MEMBER] 테이블

ID NAME
HONG 길동
PI 카츄
DUL

요약) 순번 열을 만들어 준 후 SELECT 하면 됨.

 

1. ROW_NUMBER()로 순번 열을 만들어 주기

SELECT ROW_NUMBER() OVER(order by ID asc) as 'NO', ID, NAME 
FROM MEMBER;

쿼리 결과

NO ID NAME
1 DUL
2 HONG 길동
3 PI 카츄

 

 

2. 순번 열을 만들어준 테이블을 임시테이블로 생성하거나 테이블 변수에 넣어서 거기서 select 하면 댐.

A) 임시테이블로 생성한 후에 SELECT하기 

WITH TEMP AS 
(
  SELECT ROW_NUMBER() OVER(order by ID asc) as 'NO', ID, NAME 
  FROM MEMBER
) --임시테이블 생성

SELECT * FROM TEMP WHERE NO=2; --2번째 열 SELECT

 

B) 테이블 변수에 넣어서 SELECT하기

DECLARE @TEMP TABLE( --테이블 변수 생성
	NO INT,
	ID VARCHAR(10),
	NAME VARCHAR(10)
)

--테이블 변수에 SELECT결과 넣기
INSERT INTO @TEMP 
SELECT ROW_NUMBER() OVER(order by ID asc) as 'NO', ID, NAME FROM MEMBER


SELECT * FROM @TEMP WHERE NO=2; --2번째 열 SELECT

 

머가 편한지는 선택 

반응형
반응형

기간 검색 날짜 시작일이 20220101, 종료일이 20220301인경우

검색하려는 기간이 유효 범위 안에 있는지 검사하는 함수.

예를 들어 시작일로부터 한달까지만 검색할 수 있는 경우.

$('#startdate').val()		//20220101 
$('#enddate').val()		//20220301


//시작일로부터 days 일 뒤 까지는 검색이 유효함.
function dateValiChk(days){	
	//new Date(2022,0,1)를 사용하여 날짜 세팅.
	var sdate = new Date($('#startdate').val().substring(0,4),$('#startdate').val().substring(4,6)-1,$('#startdate').val().substring(6,8));
		
	//new Date(2022,2,1)를 사용하여 날짜 세팅.
	var edate = new Date($('#srchedate').val().substring(0,4),$('#enddate').val().substring(4,6)-1,$('#enddate').val().substring(6,8));
		
	//출력 결과 Sat Jan 01 2022 00:00:00 GMT+0900    
	console.log('sdate : ' + sdate);
	//출력 결과 Tue Mar 01 2022 00:00:00 GMT+0900
	console.log('edate : ' + edate); 
		
        
	//검사 기준 date 만들기
	var validDate = sdate;
	//시작날짜에서 유효한 days를 더해줌 ex)31일
	validDate.setDate(validDate.getDate()+days);
        
	//출력 결과 Tue Feb 01 2022 00:00:00 GMT+0900
	console.log('validDate : ' + validDate);  
        
	if(validDate < edate ){ //끝날짜가 검사기준 날짜보다 큰 경우
		return '검색 기간은 최대 1개월입니다.';		
	}else{
		return 'success';
	}
}


dateValiChk(31); //결과 fail

 

javascript date 기본 

var myDate1 = new Date(); // 현재 date 구하기
var myDate2 = new Date(2022,2,3); // 2022년 3월 3일 날짜세팅
var myDate3 = new Date('2022-03-03'); // 2022년 3월 3일 날짜세팅

var myDate4 = myDate3.getDate(); //날짜 get
myDate4.setDate();
반응형
반응형

 

INSERT INTO myTable (ID, Name) VALUES ('2', 'myName')

테이블에 insert를 하려는데 이런 에러가 뜬다... 

[ IDENTITY_INSERT가 OFF로 설정되면 .... 명시적 값을 삽입할 수 없습니다. ]

 

 

* identity 속성 : 숫자형식의 컬럼에 대해 지정된 초기값과 증가치를 주어 insert시 마다 자동으로 증가되며 값이 발생된다. 

 

예를 들어 table 생성시에

CREATE TABLE myTable(
	[ID] [decimal](9, 0) IDENTITY(1,1) NOT NULL --1부터 1씩증가
)

IDENTITY 속성을 주면  INSERT시에 ID값을 주지 않아도 

즉 자동으로  들어간다고 생각하면 됨..

이걸 임의로 값을 넣으려고 하니 에러가 나는 것. 

 

-> INSERT시에 해당 컬럼에 임의로 값을 넣고 싶다면

 

SET IDENTITY_INSERT [테이블이름] ON

 

->ON설정을 해주고 INSERT 후에 다시 OFF를 해주자.

SET IDENTITY_INSERT [테이블이름] OFF

 

 

 

 

반응형
반응형

vanilla js로 radio 타입 체크 여부 control

<input type="radio" name="pick" value="1">
<input type="radio" name="pick" value="2">
<input type="radio" name="pick" value="3">
document.getElementsByName('pick').item(3).checked=true
반응형
반응형

주택촌에 이사온 주인공은 사실 이 집이 살인사건이 있었던 집인걸 알게 되고 이웃들과 이런 저런 얘기를 나누며 계속 범인을 찾아가게 되는 이야기.

이 작가는 이전에 '비하인드도어'라는 소설로 처음 접했는데, 그 소설도 상당히 재밌게 읽었었던 터라 이 소설도 기대하면서 읽었음. 추리/스릴러는 취향이 아니지만 작가 믿고 읽어봤음.

근데 읽다보니 중간부터 대충 범인이 보이는 것 같아서 좀 뻔하다 싶었는데 제법 반전이 있고(사실 내가 생각한 범인이 아니었음..) 그 반전을 위한 복선도 어느정도 잘 깔아둔 것 같다.

소설에 등장하는 인물들의 성격이나 서사를 이야기속에 잘 녹여내었고 주인공의 생각과 심리를 잘 따라갈 수 있었다. 그래서인지 주인공이 생각하는대로 이 사람도 의심하고 저 사람도 의심하고 주변 등장인물들을 모두 다 의심하게 된다. ㅋㅋㅋ 온갖 사람들을 다 의심하지만 진짜 범인을 의심할 수 조차 없게 스토리를 풀어가는게 정말 굉장하다. 한 번 의심했다가 의심을 풀고 믿게 되면 다시 의심하기는 어려운 심리를 잘 이용했다고 생각이 든다.

 

주인공이 범인을 자꾸 알고싶어 하게 되는 이유는 주인공의 과거와 연관이 있는데, 과거에 집착하는 이런 점이 연인 간의 관계에서도 잘 드러난다. 주인공을 이루는 성격 하나하나가 스토리에 모두 잘 녹아있는것이 너무 좋았다. 그런 점 때문에 읽으면서 주인공인 앨리스에게 넌덜머리가 나기도 했지만 오히려 주인공을 더 인간적으로 보이게 하고 소설에 더 빠져들 수 있게 하는 것이 아닌가 싶다. 

아픈 과거를 가진 주인공이 범인을 알아내는 과정을 겪은 뒤 성장하는 모습이 꼭 성장소설같기도 했다. 

 

 


 

그를 용서하지 못한 건 그의 범죄 이력이 아니라 질투 때문이었다.
나는 과거에 발이 묶여 있는데, 그는 자신이 저지른 짓을 속죄하고 새 인생을 살 수 있었다는 사실이 샘이 났다.

 

본인은 계속 과거속에 살고 있는데 상대방은 과거를 빠져나와 현재를 살고 있는걸 보며 느끼는 감정을 질투라고 표현한 것이 새로웠다...

 

"아직은 언니를 보내지 못하겠어요. 완전히는요"

"그걸 내가 왜 모르겠어요"

"20년이나 지났는데요?

"슬픔에는 시간이 아무 의미가 없어요"

 

너무 슬픈 구절이었음. 사랑하는 대상을 잃으면 얼마나 됐든 시간은 아무 의미가 없다는게 와닿았다. 

시간이 약이라는 말도 있지만 개인적으로 나는 시간과 추억은 아무 힘이 없다는 말을 좋아한다. 

 

반응형
반응형

뮤지컬로 나온대서 읽어보았다. 

너무 길지 않고 담백해서 읽기 좋았음.

의식을 가진 인공지능 안드로이드 로봇이 범죄를 저지르고, 그 로봇이 법정에 서게 된다.

인간이란 무엇인가? 의식이란 무엇인가? 죄와 벌이란 무엇인가? 

신박한 주제이고, 굉장히 심오하다. 

의식이 있는 안드로이드 로봇 '아오'가 인간이 본질적으로 무엇이 다른것일까.

수면모드에 들어가면 의식이 잠드는 것도, 전원을 꺼버리면 의식이 사라지는 것도 인간과 다를 것이 없다. 

인간과 의식을 가진 로봇을 구분짓는 것은 무엇일까.

사실 더 나아가서 인간은 다른 동물들과 무엇이 그렇게 다르길래 그토록 인간만 존엄하며 다른 생명들은 이용해도 된다고 믿고있는 걸까 싶다.

 

소설에서는 법률적인 해석의 내용과 피조물의 존엄 등 안드로이드를 재판하는 과정에 무게를 두며 철학적인 면을 조명하였다. 그래서 등장인물들의 감정선이나 내용보다는 생명윤리나 과학 윤리 방면이 두드러지는 느낌인데

뮤지컬에서 배우들이 안드로이드 로봇인 '아오'를 연기하는 걸 본다면 아오가 의식으로 인해 설렘과 고뇌를 느끼는 모습을 볼 수 있고 표정들을 볼 수 있을 것 같아  스토리에 더 몰입할 수 있어서 정말 재미있을듯.... 

'아오' 역할 유태양씨가 부르는 '내 피는 파랑'. 아오의 감정이 잘 담긴 노래인듯 함.

 

좋았던 구절들

 

삶의 의미는 의식에게 선천적으로 주어지지 않지만, 개별적 의식이 스스로에게 삶의 의미를 부여할 수는 있다.
그러나 그 의미는 그 의식에게만 참이며, 다른 의식에게도 참인지 거짓인지는 논리적으로 결정될 수 없다.

 

 

타인의 목소리는 공기를 통해서만 듣지만, 자신의 목소리는 자기 몸을 통해서도 듣습니다.
그래서 남이 듣는 자신의 목소리와 자기가 듣는 자신의 목소리가 다릅니다. 

 

 

안드로이드가 자연이 아닌 공장에서 생산되었다는 이유만으로 생명체라는 사실을 부인할 수는 없습니다.
지금 생명공학을 통하여 수많은 신생아들이 실험실에서 탄생하고 있기도 합니다.
어떤 존재가 헌법이 보호해야 할 피조물 또는 생명체인지 여부는 '공장이나 실험실에서 생산되었느냐, 자연에서 태어났느냐'가 아니라, 그 존재의 실질에 비추어서 판단해야 합니다.

 

 

어떤 주체는 본래 그에게 선택의 자유가 있는 경우에만 결과를 책임질 수 있는 것입니다.
행위의 자유가 없으면, 책임을 물을 근거도 사라집니다. 

 

 

인간은 육체적으로나 정신적으로나 자기 자신이라는 존재에 갇혀 있죠.
그 상태에서 자기에 대한 온갖 집착과 욕망이 생겨나고요.
반응형

'' 카테고리의 다른 글

작은 땅의 야수들  (0) 2024.10.21
친애하는 숙녀 신사 여러분 - 유즈키 아사코  (0) 2023.04.16
완전한 행복 - 정유정  (0) 2022.05.07
매일 인문학 공부 - 김종원  (2) 2021.11.03
포르노랜드 - 게일 다인스  (0) 2021.10.14
반응형

eclipse에서 SVN을 사용하는경우에

레포지토리에 소스를 업로드 하거나(commit) 내 로컬의 소스를 업데이트하는 방법(git의 경우 pull)

 

1. 프로젝트 우클릭 > Team > Synchronize With Repository

원격 레포지토리와 싱크를 맞추기 위함.  commit해야 하거나 땡겨와야 하는 소스를 확인할 수 있다. 

perspective 모드가 아래와 같이 Team Synchronizing 로 바뀐다.

 

2. Team Synchronizing 모드에서는 왼쪽 창에 파일이 아래와 같이 표시된다.

파일에 달린 화살표의 의미는 아래와 같다.

레포지토리에 update 된 파일
local에 반영 안 된 파일
내가 땡겨와야(update)  할 파일임

 local에서 수정된 파일
레포지토리에 반영 안 된 파일
commit해야 할 파일

local에서도 수정되고
레포지토리에서도
수정되어서 충돌이 난 파일.
해당 파일을 우클릭하여
update를 눌러 땡겨오면 됨
해당 파일을 우클릭하여
commit(업로드) 
혹은
Override and Update
파일 내용을 비교하여 편집한뒤
파일을 우클릭하여 update

 

* 파일 비교/편집하는 법? 

파일을 더블클릭하면 내 로컬 파일과 원격저장소에 있는 파일을 비교할 수 있는 창이 열림

왼쪽이 내 Local 파일, 오른쪽이 원격저장소 파일임.

추가된 부분이 있으면 저렇게 파란줄, 충돌나는 부분은 빨간색으로 표시되며 가운데 네모에 커서를 눌러서 왼쪽/오른쪽 내용을 가지고 덮을 수 있음.

편집 및 확인을 다 했으면 파일 우클릭하여 commit이나 update 진행

 

* 파일 나눠보는 법? 

왼쪽 상단 모드 아이콘 확인. 

왼쪽부터 Incoming Mode,   Outgoing Mode,   Incoming/Outgoing Mode

* update 할 파일만 보기 : Incoming Mode 선택

* commit 할 파일만 보기 : Outgoing Mode 선택

* 둘 다 보기 : Incoming/Outgoing Mode

 

반응형
반응형

설악 워터피아에서 정말 가까운 밥집이다.

오후 8시까지 영업이라 놀다와서 밥먹으면 딱좋다.

주차장은 넓음.

 

황태정식을 먹었다.

황태정식 18,000원

너무 급하게 먹느라고 사진이 별로 없음 ㅎㅎ

황태구이 + 명태전 + 깍두기 + 나물 + 깻잎지 + 더덕구이 + 고추장아찌 + 북어국

양이 정말 많다.

황태구이는 살짝 매콤하고 달짝지근한것이 증말 맛있었다. 완전 밥도둑재질. 양념게장 좋아하는 사람이면 환장할 맛인듯.

명태전도 두툼한것이 고소하고 맛있다. 남녀노소 좋아할 맛.

더덕구이는 황태구이와 같은 양념인것 같은데 차가워서 정말 맛있었다.

고추장아찌도 맛있었다.

북어국도 굉장히 푸짐했는데 청양고추가 들어가서 개운하고 매콤칼칼한것이 밥말아먹으면 한공기 뚝딱할 맛.

또먹고싶당~

반응형

'속초' 카테고리의 다른 글

속초 오복식당  (0) 2022.08.06

+ Recent posts