在 SQL Server 上创建复杂索引

锦米斯特里

是否有可能以某种方式在表达式上创建索引,以便我可以,例如,针对字符串字段编写查询,但意味着是数字?

例如,我继承了一个数据库,该数据库有一列PolarFactor存储诸如“234.28234”之类的值,并且类型为varchar(100)

我想有效地查询该列,获取值在 200 到 300 之间的所有行。

如果你能做这样的事情就太好了......

create index i1 on table(CAST(PolarFactor as Double))

这是无效的。

但我想知道是否有办法做到这一点,或者是否有人有更好的主意。

戈登·利诺夫

是的。使用计算列:

alter table t add polarfactor_double as (try_cast(PolarFactor as double)) persisted;

create index i1 on t(PolarFactor_Double);

请注意,我使用的是try_cast()而不是cast(),因此错误不会导致插入中断。

此外,您可能应该修复您的数据,以便PolarFactor使用正确的数据类型进行存储。不要将数字存储为字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章