<=>
我刚刚在 MySQL 中阅读了这个问题:
SQL Server 是否有与此等效的功能?
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 替换选择一个不会出现在您比较的值中的值。
如前所述,没有直接的运营商。你可能会做这样的事情 - 替换
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