고수님들께 질문드립니다
예를들어
010.050.223.051 이란 아이피를 소수점 자리마다 앞의 0을 빼는 update 쿼리는 어떻게 해야 할까요?
Replace나 ltrim을 활용하면 될듯한데 방법을 모르겟네요..
점을 기준으로 세자리길이로 구분한다면 substring, cast as int 등을 사용하면 될것같네요.
구분한 숫자의 자리수가 다르다면 charindex로 하면 될듯?
SELECT ip , SUBSTRING(REPLACE(REPLACE('.'+ip, '.00', '.'), '.0', '.'), 2, 20) x FROM (SELECT '010.050.223.051' ip) a ;
위에 두분 답변 감사드립니다
그런데 예를 든 IP 뿐아니라 모든 IP가 다 저런식이라..
마농님께서 만들어주신 쿼리는 저 하나의 IP만 해당하는듯 싶습니다
010.050.223.051
010.050.024.123
.
머 이런식인데..한번에 만드는 쿼리는 어찌해야 할까요?
마농님이 작성해주신 쿼리 확인해보니 정상적으로 작동됩니다.
하기쿼리 참고해보시면 될듯요..
---쿼리시작---
;with tblA(ip) As ( Select '010.050.223.051' Union All Select '010.150.223.051' Union All Select '010.001.023.151' Union All Select '010.050.223.001' Union All Select '001.050.223.051' Union All Select '110.050.223.051' ) Select SUBSTRING(REPLACE(REPLACE('.'+a.ip, '.00', '.'), '.0', '.'), 2, 20) x From tblA a ---쿼리끝---
그리구 실제 데이터 Update 시
하기와 같이 바꾸시면 될듯합니다.
그럼 수고하세요~
Update 실제테이블명
Set IP컬럼명 = SUBSTRING(REPLACE(REPLACE('.'+IP컬럼명, '.00', '.'), '.0', '.'), 2, 20) x