스크립트를 통해 연속적으로 발생하는 많은 쿼리 집합에서 단일 쿼리는 REGEXP_LIKE를 사용합니다. 그것에서는 정규 표현식 ([a-z])이 발음 구별 부호 (á, õ, ì)와 일치하는 것을 원하지 않습니다. 이 작업을 수행하는 유일한 방법은 NLS_SORT를 BINARY로 설정하는 것입니다. 그러나이 쿼리는 나중에 실행되는 다른 쿼리에 영향을 미치지 않습니다.단일 쿼리에 대한 NLS_SORT 변경
이 이유로,이 쿼리에 대해서만 변수 NLS_SORT를 설정하고 싶습니다. 그러나 PL/SQL을 사용하지 않을 것입니다. 이것을 달성 할 수있는 방법이 있습니까?
나는이 선호하지만, 내가 찾은 문서에 따르면, 이러한 매개 변수가 존재하지 :
SELECT * FROM dual WHERE REGEXP_LIKE('ë', '[a-z]'); -- match
ALTER SESSION SET NLS_SORT = BINARY;
SELECT * FROM dual WHERE REGEXP_LIKE('ë', '[a-z]'); -- no match
ALTER SESSION SET NLS_SORT = DEFAULT; -- not working
ALTER SESSION RESET NLS_SORT; -- not working
- 다른 방법이 있나요 :는
SELECT * FROM dual WHERE REGEXP_LIKE('ë', '[a-z]', BINARY);
나는 이런 식으로 뭔가를 상상할 수 NLS_SORT를 설정하는 것보다 정규 표현식에서 발음 구별 부호를 제외시킬 수 있습니까?
- PL/SQL없이 NLS_SORT 설정을 복원 할 수있는 방법이 있습니까? 다른 정규 표현식에서 그들을 outrule 당신이 할 수 암시 적 일치하지 carachtes 알고있는 경우
쿼리가 실행되기 전에 세션을 변경하고 쿼리를 실행 한 후 매개 변수를 다시 설정할 수 있습니다. https://lalitkumarb.wordpress.com/2014/01/22/oracle-case-insensitive-sorts-compares/ –
지금은 DUTCH이지만이 코드를 하드 코딩하고 싶지는 않습니다. – TacoV
어떤 이유로보고있는 것을 시뮬레이트 할 수 없습니다. 아마도 고려하지 않은 다른 NLS 설정 일 수 있습니다. 내가 á와 일치하는 것을 얻을 수있을 때,'c' 또는'i'를'match_param '의 세번째 인수로'regexp_like'에 넘기는 것은 일치를 멈 춥니 다. 그걸 배제할만한 가치가 있을까요? –