SQL Server 2008 - 计算列仅提取其他列中的数字

时间:2017-05-03 20:37:25

标签: sql-server

我正在使用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计算列添加索引时,它提示错误与“无法添加因为它是非确定性列”相关的内容...

有任何建议可以确定性和可索引性吗?

0 个答案:

没有答案