기판을 사용하여 Oracle에서 문자열 자르기
끈을 지정된 길이로 다듬고 싶습니다.끈이 짧으면 아무것도 하고 싶지 않아요.그 일을 할 수 있는 기능 기판을 찾았습니다.그러나 Oracle 설명서에는 문자열이 최대 길이보다 짧을 경우 발생하는 동작이 없습니다.
예를 들어 다음과 같습니다.
select substr('abc',1,5) from dual;
필요한 'abc'를 반환합니다.
이 사용법에 대해 함수가 정의되어 있지 않은 것 같아서 안전한지 문의드립니다.자르는 더 좋은 방법이 있습니까?
완전히 괜찮지만 원한다면 다음 쿼리를 사용할 수 있습니다.
select substr('abc',1,least(5,length('abc'))) from dual;
이것은 흥미로운 질문입니다.놀랍게도, 그 문서는 이 점을 명시적으로 다루지 않는 것 같습니다.
저는 당신이 하고 있는 일이 꽤 안전하다고 생각합니다.substr()
문자열이 너무 짧을 때 문자열 끝에 문자를 "추가"하지 않습니다.시간이 지남에 따라 Oracle을 포함한 많은 데이터베이스에서 이러한 동작을 수행해 왔습니다.이것은 다른 데이터베이스와 대부분의 언어에서 유사한 기능이 작동하는 방식입니다.
한 가지 예외는 원래 데이터 유형이 다음과 같은 경우입니다.char()
보다는varchar2()
type. 이 경우 함수는 같은 타입의 문자열을 반환하므로 공백으로 덧씌워질 수 있습니다.그러나 이는 실제 함수가 아닌 유형의 속성입니다.
Substrate를 단독으로 사용하여 후행 공백이 발생하지 않도록 확실히 하고 싶다면 다음을 사용할 수 있습니다.
SELECT RTRIM(SUBSTR('abc',1,5)) FROM DUAL;
나누어서 즐겨요.
아래 쿼리를 사용하는 것이 좋습니다.
SELECT SUBSTR('abc',1,LEAST(5,LENGTH('abc'))) FROM DUAL;
위의 쿼리는 문자열의 길이 또는 숫자 5 중 더 낮은 값을 사용합니다.
언급URL : https://stackoverflow.com/questions/24261915/using-substr-to-trim-string-on-oracle
'programing' 카테고리의 다른 글
하나의 SELECT 문에 두 개의 스칼라 변수를 설정하시겠습니까? (0) | 2023.09.15 |
---|---|
PHP 객체 리터럴 (0) | 2023.09.15 |
getopt_long() -- 적절한 사용 방법은 무엇입니까? (0) | 2023.09.15 |
특정 RUN 명령에 대해 캐시 사용 안 함 (0) | 2023.09.15 |
"iff" 대 "if other if"의 성능 차이 (0) | 2023.09.15 |