【问题标题】:Indexing using UPPER function in SQL Server在 SQL Server 中使用 UPPER 函数进行索引
【发布时间】:2019-09-07 06:05:47
【问题描述】:

我正在尝试使用 SQL Server 中的以下查询使用 liquibase 创建索引。

CREATE NONCLUSTERED INDEX LASTNAME_IDX ON EMPLOYEE(UPPER(LAST_NAME));

但是我在运行 liquibase 时遇到了错误。它在 oracle 中运行良好。让我知道是否可以在 SQL Server 中创建索引

【问题讨论】:

  • 请详细说明您的问题
  • 使用默认排序规则,SQL Server 不区分大小写(Oracle 区分大小写),因此不需要在 UPPER 上创建索引,只需索引列即可。
  • 下次遇到您不理解的错误时,请发布完整的错误消息。没有人需要猜测这些事情。正如 Piotr 所提到的,如果您对该列使用不区分大小写的排序规则,则没有理由这样做。

标签: sql-server liquibase


【解决方案1】:

SQL Server 不支持 Oracle 支持的函数索引。这里的一种解决方法是创建一个计算的大写列,然后对其进行索引:

ALTER TABLE EMPLOYEE ADD LAST_NAME_UPPER AS UPPER(LAST_NAME);
CREATE NONCLUSTERED INDEX last_name_idx ON EMPLOYEE(LAST_NAME_UPPER);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    • 2014-04-05
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    相关资源
    最近更新 更多