问题标签 [nls-comp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sorting - 以文本为数字的 oracle 排序
我的NLS
设置:
简单测试查询:
实际结果:
期望的结果:
问题:
有没有NLS
可以帮助我达到预期结果的设置?我知道我可以做order by to_number(x)
,甚至更好,order by lpad(x, 5)
但在这种情况下并不好 - 我需要一个不需要更改查询的系统范围的解决方案。
我尝试了什么:
order by nlssort(x, 'nls_sort=binary');
alter session set nls_sort='binary';
java - 如何在执行特定查询后更改会话 NLS_COMP/SORT
我的问题特定于一些问题场景,其中事务从 Spring Container 启动,EntityManager
然后我从EntityManager
.
整体流程:
在应用程序
entityManager.createNativeQuery(searchQuery)
中可以选择一些数据。我需要
entityManager
在我要设置的会话中退出休眠会话nls_comp
/nls_sort
或者我可以自己执行查询entityManager
。例如更改会话集nls_comp=linguistic
。完成后,我想再次禁用这些选项回到以前的状态。很可能是通过关闭休眠会话或某种机制。这是正确的方法吗?
我是否也应该为 2 alter 命令启动另一个事务(我试过它给出了一些异常)。请让我知道如何实现它以及如何在 spring 启动的事务中管理休眠会话,或者我可以自己实现启用/禁用entityManager
。
oracle - 当我更改 NLS 时,ora 给出“ORA-00979:不是 GROUP BY 表达式”错误
我的 Oracle NLS 参数是:
询问:
此查询有效并返回数据。
但是当我改变
此查询指向"= TABLEA.COLUMNA1"
并给出“ORA-00979:不是 GROUP BY 表达式”错误?
在我的项目中,我有很多这样的查询,但我无法全部更改。如果我的查询错误,为什么要先运行?
提前致谢!
sql - Making Oracle sorting case-insensitive?
This is related to making oracle sorting case-insensitive. Most of the solutions I have seen mentions setting below session params :
By default NLS_COMP is BINARY.
I found that if I just set NLS_SORT to BINARY_CI without setting the NLS_COMP to LINGUISTIC, it still works, i.e oracle sort becomes case-insensitive. Is there any advantage to setting NLS_COMP param ?
sql - Oracle - WHERE 子句中的第 NUMBER(38) 列 - 数据有逗号
我正在尝试使用列数据类型 NUMBER(38) 上的 where 子句查询表。因为它是一个数字(如下格式所示)这不起作用
所以我使用转换了字符串TO_NUMBER & NLS_NUMERIC_CHARACTERS
输出:1,234
但是,我不确定如何在WHERE
子句中使用它:
不合法的识别符
oracle11g - 语言排序和字符串搜索在 oracle 中获取不正确的数据
我在 Oracle 11g 数据库中有一个表“审计”。该表有一列“Account_Name”。“Audit”.“Account_name”列包含以下数据:“Guest”、“feeder_1”、“feeder_2”、“feeder_3”等。
我在“Audit.Account_Name”列上创建了以下索引。
从 JDBC 代码中,我首先执行以下语句,然后执行实际查询以从“审计”表中获取数据。
//这是执行以获取数据的代码
上面的查询从表中获取所有数据,包括像“Guest”这样的值。我除了查询应该只获取 Account_name 以“f”开头的行,但看起来像 NLS_SORT 和 NLS_COMP 正在获取不正确的数据。
我发现如果我评论“line2”,它会正确获取数据。谁能建议为什么这些选项不能正常工作。
我在同一个连接对象上执行了来自 JDBC 代码的查询。
这个问题是在生产环境中提出的。所以早些时候我已经使用 JDBC 编写了一个独立的 Java 代码来检查我是否遇到了与生产中相同的问题。
我现在编写了一个 Oracle 程序,在程序中首先设置 NLS_COMP 和 NLS_SORT 参数,然后执行搜索查询(此处使用 CURSOR),然后重新设置 NLS_SORT=BINARY。结果是一样的,我遇到了同样的问题。
执行以下查询后,我得到字符集为“WE8MSWIN1252”;
从 nls_database_parameters 中选择值到 char_set 中,其中 parameter = 'NLS_CHARACTERSET';
database - 在 Oracle 12c 中使用排序规则在比较中忽略尾随空格
我想让 Oracle 数据库将 'abc' 和 'abc' VARCHAR2s 视为在所有比较中相等(WHERE 子句、排序......)。基本上这意味着忽略尾随空格,就像在 MariaDB/MySQL 中的 PADSPACE 排序规则一样。
有一些可用的解决方案,比如使用 RTRIM 函数,但我特别关注使用排序规则的解决方案,因为我需要一些透明且对性能没有巨大影响的东西(即在等式的左侧应用 RTRIM)。我似乎确实记得,在过去的某个时候,在较旧的 Oracle 安装中,我通过选择正确的排序规则(即,将 NLS_COMP 设置为语言,然后为 NLS_SORT 设置一些值)来实现此行为。现在几年后,使用更新的 Oracle 安装 (12c),我似乎无法再复制相同的行为。虽然它只是一个记忆,所以我可以将它与 MySQL 中的用例混合,而不是“旧 Oracle”。
Oracle12c 中是否有任何排序规则忽略比较中的尾随空格(即相当于 MySQL/MariaDB 中的 PADSPACE 排序规则)?我已经尝试了多个排序规则(BINARY_AI、FRENCH、XFRENCH、FRENCH_M、UCA0610_DUCET 和 UCA0620_DUCET),但均无济于事。
提前致谢!
oracle - postgres 中的 Oracle nls_sort 等效项
从事数据库从 Oracle 到 Postgres 的迁移。我正在尝试在我的应用程序中实现排序行为,其中以数字开头的字母数字标签需要出现在字母之后(在下面的示例中进行了说明)。
我在 Postgres 中尝试了法语排序规则,但无法达到我在 Oracle 中使用NLS_SORT "french"
.
发布 Oracle 查询,我需要 Postgres 中的等效项,可以在 DB 中设置一次,以便应用程序以后使用它。
甲骨文:
Postgres:
我尝试通过创建french
从pg_collation
条目命名的排序规则fr-FR-x-icu
并使用 pgAdmin GUI 更改现有表列,如下所示:
不走运,我得到了同样的结果。
我也在 Postgres 中尝试了以下查询,它给出了与上面相同的结果。我在 Postgres 中遗漏了什么吗?