小编Chr*_*son的帖子

为什么我不能持久化 binary(4) 计算列?

我正在尝试存储和索引 IP 地址。我从一个简单而愚蠢的表格开始:

CREATE TABLE [dbo].[IP_addresses](
    [IP_as_text] [char](16) NOT NULL,
    [IP]  AS ([dbo].[fnBinaryIPv4]([IP_as_text]))
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud)

哪里fnBinaryIPv4来自/sf/ask/96988671/

CREATE FUNCTION dbo.fnBinaryIPv4(@ip AS VARCHAR(15)) RETURNS BINARY(4)
AS
BEGIN
    DECLARE @bin AS BINARY(4)

    SELECT @bin = CAST( CAST( PARSENAME( @ip, 4 ) AS INTEGER) AS BINARY(1))
                + CAST( CAST( PARSENAME( @ip, 3 ) AS INTEGER) AS BINARY(1))
                + CAST( CAST( PARSENAME( @ip, 2 ) AS INTEGER) AS BINARY(1))
                + CAST( CAST( PARSENAME( @ip, 1 ) AS INTEGER) AS BINARY(1)) …
Run Code Online (Sandbox Code Playgroud)

sql-server non-deterministic computed-column

5
推荐指数
2
解决办法
273
查看次数