创建一个捕捉,爆裂,弹出的功能

时间:2019-05-17 21:08:10

标签: sql-server

创建一个名为fncSCP的函数,该函数将int n作为参数并返回一个varchar 将您在问题1中创建的函数更新为: 如果n平均分为2,则将'Snap'值连接到varchar 如果n被3均分,则将'Crackle'值连接到varchar 如果n平均分为5,则将varPop值连接到varchar 否则将varchar设置为n的值。该代码不起作用。我收到连续错误。有什么建议吗?

$s = "value1=php; value2=.php.net; Expires=Nov, 12-May-2020 20:51:23 GMT Path=/; random;";

preg_match("/value1=(.*?);/", $s, $matches);
print_r($matches[1]); => php

1 个答案:

答案 0 :(得分:2)

对我来说,您的问题是这样的(尽管它似乎是另一个问题引起的?):

CREATE FUNCTION fnSCP (@n INT)
    RETURNS VARCHAR(20)
AS

BEGIN

    RETURN
    (
        SELECT
            CASE
                WHEN
                    @n % 2 <> 0
                    AND @n % 3 <> 0
                    AND @n % 5 <> 0
                THEN CAST(@n AS varchar(20))
                ELSE
                    CONCAT(
                        CASE WHEN @n % 2 = 0 THEN 'Snap' END
                        , CASE WHEN @n % 3 = 0 THEN 'Crackle' END
                        , CASE WHEN @n % 5 = 0 THEN 'Pop' END
                    )
            END
    )

END

尽管您已经返回了varchar(10),但这让我觉得也许是这样:

CREATE FUNCTION fnSCP (@n INT)
    RETURNS VARCHAR(10) -- ought to be varchar(11); see below
AS

BEGIN

    RETURN
    (
        SELECT
            CASE
                WHEN @n % 2 = 0 THEN 'Snap'
                WHEN @n % 3 = 0 THEN 'Crackle'
                WHEN @n % 5 = 0 THEN 'Pop'
                ELSE CAST(@n AS VARCHAR(10)) -- ought to be varchar(11); see below
            END
    )

END

尽管我刚刚读到,-2147483648是int数据类型的最小值(最大负数),它不会进入varchar(10),所以它必须是{{1} }。