정상작동 되는지 전체가 들어간지는 아직 몰라서 확인이 필요함.
예전에 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 |