是否有可能以某种方式在表达式上创建索引,以便我可以,例如,针对字符串字段编写查询,但意味着是数字?
例如,我继承了一个数据库,该数据库有一列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] 删除。
我来说两句