정상작동 되는지 전체가 들어간지는 아직 몰라서 확인이 필요함.

예전에 3 letter를 1letter로 replace를 이용한 건 편리했는데

1letter를 3letter로 바꾸는건 오류가 있어서 못쓰다가, 이번에 반복문을 이용해서 한번 시도해 봄

 

DO $$ 
DECLARE
   hgvspthreeletter text := 'Thr790Met';
   hgvsponeletter text := 'T790Mfs';
   hgvslen integer := length(hgvsponeletter);
   i	integer := 1;
   result	text;
   conv		text;
   res		text;
BEGIN 

--    RAISE NOTICE '%의 길이는 %이며 원래는 % 임', 
--        hgvsponeletter, hgvslen, hgvspthreeletter;

while i<= hgvslen loop
	select substring(hgvsponeletter, i, 1) into result;
	 SELECT i+1 INTO i;
	SELECT case 
		when result = 'A' then 'Ala'
		when result = 'B' then 'Asx'
		when result = 'C' then 'Cys'
		when result = 'D' then 'Asp'
		when result = 'E' then 'Glu'
		when result = 'F' then 'Phe'
		when result = 'G' then 'Gly'
		when result = 'H' then 'His'
		when result = 'I' then 'Ile'
		when result = 'J' then 'Xle'
		when result = 'K' then 'Lys'
		when result = 'L' then 'Leu'
		when result = 'M' then 'Met'
		when result = 'N' then 'Asn'
		when result = 'O' then 'Pyl'
		when result = 'P' then 'Pro'
		when result = 'Q' then 'Gln'
		when result = 'R' then 'Arg'
		when result = 'S' then 'Ser'
		when result = 'T' then 'Thr'
		when result = 'U' then 'Sec'
		when result = 'V' then 'Val'
		when result = 'W' then 'Trp'
		when result = 'X' then 'X'
		when result = 'Y' then 'Tyr'
		when result = 'Z' then 'Glx'
		when result = '*' then 'Ter' -- '*'
		else result
	end INTO conv;
	SELECT concat(res, conv) into res;
-- 	raise notice '% %' ,conv,res;
	end loop;
	
	raise notice '%' ,res;
END $$;

 

알림: Thr790Metfs

DO

Query returned successfully in 72 msec.

 

[링크 : https://www.hgvs.org/mutnomen/codon.html]

[링크 : http://www.gisdeveloper.co.kr/?p=4621]

[링크 : http://www.gisdeveloper.co.kr/?p=4573]

[링크 : https://w3resource.com/PostgreSQL/substring-function.php]

'프로그램 사용 > postgreSQL' 카테고리의 다른 글

left join이 능사는 아니다  (0) 2019.12.24
dense_rank()  (0) 2019.12.22
postgresql loop 반복문  (0) 2019.12.20
sql array any all  (0) 2019.12.20
postgres 동일 컬럼명 에러  (0) 2019.12.20
Posted by 구차니