Names
인 컬럼을 쿼리하여 정확히 2“a”
이 포함 된 이름 만 가져올 수 있습니까? 만은 정확히이 문자를문자열의 정확히 2 문자 일치 -
나는 LIKE
사용하지만 난 %a
을 쓸 때 즉,도 1 a
모든 이름을 발견 한 것 %
기호 잘 알고,하지만 난 찾을 필요가있다.
설명해주십시오 - 미리 감사드립니다
테이블 이름 : "사람들"
열 이름 : "이름, 나이, 성별"
Names
인 컬럼을 쿼리하여 정확히 2“a”
이 포함 된 이름 만 가져올 수 있습니까? 만은 정확히이 문자를문자열의 정확히 2 문자 일치 -
나는 LIKE
사용하지만 난 %a
을 쓸 때 즉,도 1 a
모든 이름을 발견 한 것 %
기호 잘 알고,하지만 난 찾을 필요가있다.
설명해주십시오 - 미리 감사드립니다
테이블 이름 : "사람들"
열 이름 : "이름, 나이, 성별"
사용 '_a'
. '_'
은 단일 문자 와일드 카드이며 '%'
은 0 자 이상의 문자와 일치합니다.
고급 일치가 필요한 경우 REGEXP_LIKE
을 사용하는 정규식을 사용하십시오. Using Regular Expressions With Oracle Database을 참조하십시오.
물론 다른 트릭도 사용할 수 있습니다. 예를 들어, 문자열의 길이를 같은 문자열의 길이와 비교할 수 있지만 'a'를 제거합니다. 차이가 2이면 문자열에 두 개의 'a'가 포함됩니다. 하지만 문자열이 비어있을 때 length가 'null'을 반환하므로 곧 '추한'이름을 확인하려는 경우 예외가 발생해야합니다.
select * from People
where
length(Names) - 2 = nvl(length(replace(Names, 'a', '')), 0)
이 개 a
문자가 세 두 A의로 문자열을 검색하지만 당신이 요구하는지 가정.
select names
from people
where length(regexp_replace(names, '[^a]', '')) = 2;
이 또한 대문자로 A
의 거래를 확장 할 수 있습니다 : 결과 문자열은 정확히 두 문자 긴 경우
select *
from people
where names like '%a%a%'
and name not like '%a%a%a%'
고마워요. 트릭도 잘 작동했습니다. 선생님, 질문을 +1해도 똑같은 상황에서 많은 사람들이 닥칠 수 있습니다. 감사합니다. –
또 다른 해결책은 아무것도 가진 a
가 아닌 모든 것을 교체하고 확인하는 것입니다 :
select names
from people
where length(regexp_replace(names, '[^aA]', '')) = 2;
SQLFiddle 예 : http://sqlfiddle.com/#!4/09bc6
select * from People where names like '__';
도 유용 할 것입니다.
StackOverFlow 메이트에 오신 것을 환영합니다. 응답은 이미 많은 답변을 가지고 있으며 그 중 하나가 허용됩니다. 따라서 답변에 콘텐츠를 추가 할 수없는 경우 답변을 반복하지 마십시오. 먼저 새로운 것을 가지고 있는지 확인하고 답변을 게시하기 전에 다른 사람이 대답을 반복하는지 확인하십시오. – Chirag
고마워요. 그것은 작동했습니다 :) 나는'nvl'의 사용법에 대해 몰랐습니다. 왜냐하면 저는 SQL에 익숙하지 않았기 때문입니다. 질문을 +1해도 좋을지 모르지만, 많은 사람들이 똑같은 상황에 부딪 힐 수 있습니다. 감사합니다. –
완료. :)'nvl'은 오라클 발명품이며 SQL에 공통적 인 것이 아닙니다. SQL 서버와 같은 다른 데이터베이스는'isnull'을 사용합니다. 좀 더 이식성이 좋은 대안은'합병 '이지만 글자가 더 많고 철자법이 어렵다. ;-) – GolezTrol