我正在使用SQL Server 2008.有没有办法可以通过从同一个表中的另一个字母数字列中仅提取数值来创建计算列(确定性)?然后将其编入索引?
例如,在我的表tblVendorShippingInfo
中,我有一个PONum
列,其中包含字母数字,数据类型VARCHAR
。
我尝试创建一个函数并添加了列(下面)
ALTER FUNCTION [dbo].[Calc_GetPOID] (@strText VARCHAR(100))
RETURNS INT
AS
BEGIN
WHILE PATINDEX('%[^0-9]%', Left(@strText, 8) ) > 0
BEGIN
SET @strText = STUFF(@strText, PATINDEX('%[^0-9]%', @strText), 1, '')
END
RETURN Left(@strText,8)
END
-- Add the computed column
ALTER TABLE tblVendorShippingInfo
ADD POID AS dbo.[Calc_GetPOID](PONum)
当我尝试为POID计算列添加索引时,它提示错误与“无法添加因为它是非确定性列”相关的内容...
有任何建议可以确定性和可索引性吗?