2

<=>我刚刚在 MySQL 中阅读了这个问题:

MySQL 中的这个运算符 <=> 是什么?

SQL Server 是否有与此等效的功能?

4

2 回答 2

2

SQL Server 中没有类似的内置功能,但您可以使用ISNULL,例如:

DECLARE @value1 AS VARCHAR(10) = 'a'
DECLARE @value2 AS VARCHAR(10) = NULL
DECLARE @nullreplace AS VARCHAR(10) = ''

SELECT CASE 
    WHEN ISNULL(@value1,@nullreplace) = ISNULL(@value2,@nullreplace) THEN 1
    ELSE 0
END

问题是您需要为 NULL 替换选择一个不会出现在您比较的值中的值。

于 2014-02-28T01:51:49.290 回答
1

如前所述,没有直接的运营商。你可能会做这样的事情 - 替换

WHERE field <=> 'a'

WHERE IsEqual(field,'a'),其中 IsEqual 是用户函数...

CREATE FUNCTION IsEqual( A VARCHAR(128), B VARCHAR(128) ) RETURNS BOOL
BEGIN
    IF (( A = B ) IS NULL) THEN
        RETURN ((A IS NULL) AND (B IS NULL));
    ELSE
        RETURN (A = B);
    END IF;
END
于 2014-12-29T16:48:46.077 回答