숫자에서 문자열 찾는 방법 0 6 1,695

by 냉동닭 [SQL Query] 숫자 문자 찾기 INSTR REGEXP_INSTR [2018.07.16 13:16:14]


안녕하세요 질문있어요!

13자리 숫자로 이뤄진 컬럼에서 문자가 포함되어 있는 지 확인을 하고 싶습니다.

SELECT 숫자컬럼 FROM 테이블 WHERE REGEXP_INSTR(숫자컬럼, '[^0-9]') != 0;

식으로 숫자컬럼의 제일 앞자리에 숫자가 아닌 경우는 찾았는데요

13자리 모두 숫자가 아닌 데이터를 찾을 수 있는 방법은 없을까요?

 

by 냉동닭 [2018.07.16 13:59:40]

방법이 없나요?ㅠㅠ


by 우리집아찌 [2018.07.16 14:03:30]
WITH T AS (
SELECT '1312F' TXT FROM DUAL UNION ALL
SELECT 'BCDFDF1' FROM DUAL 
)

SELECT TXT , REGEXP_COUNT(TXT,'[^0-9]') CNT 
  FROM T 

 


by 우리집아찌 [2018.07.16 14:08:07]
-- 전부 숫자일경우
WITH T AS (
SELECT '1312F13456712' TXT FROM DUAL UNION ALL
SELECT '1312F1345ABC2' FROM DUAL UNION ALL
SELECT '1312313412312' FROM DUAL
)
 
SELECT TXT , REGEXP_COUNT(TXT,'[^0-9]') CNT 
  FROM T
 WHERE REGEXP_COUNT(TXT,'[^0-9]')  = 0

 


by 냉동닭 [2018.07.16 14:31:51]

감사합니다

덕분에 지금 검증 돌리고있습니다

상세하게 쿼리까지 작성해주셔서 고맙습니다~


by 우리집아찌 [2018.07.16 14:17:23]
-- TRANSLATE  이용

WITH T AS (
SELECT '1312F13456712' TXT FROM DUAL UNION ALL
SELECT '1312F1345ABC2' FROM DUAL UNION ALL
SELECT '1312313412312' FROM DUAL
)

SELECT TXT , TRANSLATE(TXT,'1234567890','0000000000') 
  FROM T  
 WHERE TRANSLATE(TXT,'1234567890','0000000000') = '0000000000000'

 


by 마농 [2018.07.16 14:32:18]
-- 사용하신 instr 방법도 앞자리만 체크하는게 아니라 이미 원하시는 결과입니다.
WHERE REGEXP_LIKE(txt, '[^0-9]')
WHERE TRANSLATE(txt, 'a0123456789', 'a') IS NOT NULL

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입