gpt4 book ai didi

sql - 更改单个查询的 NLS_SORT

转载 作者:行者123 更新时间:2023-12-02 01:41:25 24 4
gpt4 key购买 nike

在通过脚本连续触发的大量查询中,单个查询使用 REGEXP_LIKE。在其中,我不希望正则表达式 ([a-z]) 匹配变音符号 (á、õ、ì)。我发现这样做的唯一方法是将 NLS_SORT 设置为 BINARY。但是,此查询不应影响之后运行的任何其他查询。

因此,我只想为这个查询设置变量 NLS_SORT。但是,我宁愿不求助于 PL/SQL。有什么办法可以实现吗?

我更喜欢这个,但根据我找到的文档,不存在这样的参数:

SELECT * FROM dual WHERE REGEXP_LIKE('ë', '[a-z]', BINARY);

我可以想象这样的事情:

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
  • 除了设置 NLS_SORT 之外,还有其他方法可以让正则表达式排除变音符号吗?
  • 有什么方法可以在没有 PL/SQL 的情况下恢复 NLS_SORT 设置?

最佳答案

好吧,如果您知道哪些 carachtes 不匹配,您可以在另一个正则表达式中隐式排除它们:

SELECT * FROM dual WHERE REGEXP_LIKE('ë', '[a-z]') AND NOT REGEXP_LIKE('ë', '[ë]')

关于sql - 更改单个查询的 NLS_SORT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28363911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com