sql - 按列名获取索引

标签 sql sql-server

我正在使用 Sql-Server,并且我有以下查询,该查询返回具有除“SQL_Latin1_General_CP1_CI_AS”之外的排序规则的所有列

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS
where COLLATION_NAME <> 'SQL_Latin1_General_CP1_CI_AS'
and COLLATION_NAME is not null;

我还需要获取这些列上的索引,以便我可以删除这些索引,修改列,然后重新创建它们。

我的问题是我不知道如何获取从上面的查询返回的列的索引名称。

最佳答案

看看这是否对您有帮助:

select object_schema_name(object_id), object_name(object_id), name
from    sys.indexes
where   type > 0
and object_name(object_id) in (
    select C.column_name
    from INFORMATION_SCHEMA.COLUMNS C 
    where COLLATION_NAME is not null and COLLATION_NAME <> 'SQL_Latin1_General_CP1_CI_AS'
)

关于sql - 按列名获取索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9910703/

相关文章:

mysql - SQL 中 SELECT 查询的优先级

sql - 如何返回 SQL Server 存储过程的计算(聚合)结果

SQL Server - 有选择地将字段插入临时表

sql - 我可以在单个查询中检索分页行和总计数吗?

sql - 仅创建过程权限

sql - 当我尝试使用 sp_executesql 时,为什么会得到 "Procedure expects parameter ' @statement' of type 'ntext/nchar/nvarchar' ."?

mysql - 有什么方法可以防止失败的 'INSERT OR IGNORE' 上的 AUTOINCREASE 吗?

mysql - jdbcTemplate查询序列化

c# - 如何使用 EntityFramework 7 和 Asp.Net 5 调用 SQL 存储过程

sql - SELECT * FROM MyTable WHERE [日期] = ([日期] + 8 小时)