2017-03-20 5 views

답변

0
select case 
     when REGEXP_LIKE(MSISDN, '[A-Za-z]') then null 
     else MSISDN 
     end as MSISDN 
from MyTable 
+0

감사 Jhon (Y) –

+0

@AnujBedge 정규 표현식은이 잔인한하며 적어도 하나의 알파벳이 아닌 값이있는 곳이 어떤 행을 대체합니다. OP의 데이터는 열의 다른 값이 숫자임을 보여줍니다. 그래서 그들은 모두 교체 될 것입니다. – MT0

+0

@ MT0 실수로 테스트에서 '^'을 (를) 남겼습니다 ... 내 나쁜 – JohnHC

1

당신은 SQL의 CASE 문을 사용하여이 문제를 해결할 수

SELECT CASE WHEN MSISDN = 'nt>1' THEN '' ELSE MSISDN END AS MSISDN 
0

를 사용하여 특정 문자열 교체에 대한 문자열 기능을 REPLACE :

SELECT REPLACE(Your_columnName,'nt&''gt;1','') 
    FROM Your_table 
+0

거기에 코드를 설명하면 더 나은 대답이 될 것입니다! – Deep

+0

@ Deep 코드 설명이 업데이트되었습니다. – Mansoor

1

당신은 문자열을 비교할 수 또는 사용할 수를 LIKE 연산자. 일부 옵션은 다음과 같습니다

SELECT CASE 
     WHEN MSISDN = 'nt>1'   THEN NULL -- match nt&gt1; 
     WHEN MSISDN LIKE '%>%'   THEN NULL -- match > anywhere in the string 
     WHEN LOWER(MSISDN) LIKE '%<%' THEN NULL -- match < ignoring case 
     WHEN MSISDN LIKE '%&%;%'   THEN NULL -- match & followed later by ; 
     ELSE MSISDN 
     END AS parsed_msisdn 
FROM your_table