【问题标题】:Oracle: query with 'N' function - which datatype should I use?Oracle:使用“N”函数查询 - 我应该使用哪种数据类型?
【发布时间】:2015-01-11 12:35:27
【问题描述】:

我创建了一个带有索引 varchar2 列的 Oracle 表,称为“ID”。
我正在使用的软件正在读取此表,但不是运行像

这样的查询
select * from table_name where ID='something'

确实如此(注意值前的额外“N”)

select * from table_name where ID=N'something'

这会导致某种字符转换。
问题是,当第一个查询执行范围扫描时,第二个查询执行全表扫描。

由于我无法修改这个软件正在运行的查询,我应该使用哪种数据类型,而不是 varchar2,这样 'N' 函数执行的转换并不意味着全表扫描?

【问题讨论】:

    标签: oracle types


    【解决方案1】:

    字符串前的前缀 N 用于指定 NVARCHAR2 或 NCHAR 数据类型。

    在将 NVARCHAR2s 与 VARCHAR2s 进行比较时,Oracle 将 VARCHAR2 变量转换为 NVARCHAR2。这就是您正在经历全面扫描的原因。

    如果您无法修改查询,请在表中使用 NVARCHAR2 列而不是 VARCHAR2。

    【讨论】:

      猜你喜欢
      • 2012-11-07
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 2020-01-23
      • 2013-03-21
      • 1970-01-01
      • 2017-06-10
      • 1970-01-01
      相关资源
      最近更新 更多