SQL变量未设置

时间:2017-03-30 00:57:08

标签: sql sql-server sql-server-2008

我可能会遗漏一些简单的东西,作为一个比较新的SQL的人,我正在尝试以下查询:

DECLARE @uidd VARCHAR
SELECT @uidd = UID
FROM PRODUCTOBJECT WHERE EMAIL='abc@gmail.com';
SELECT ProductID FROM PRODUCTUIDMAPPING WHERE UID= @uidd;

它返回零行。令人费解的是,如果不使用变量并同时运行两个选择,我确实得到了正确的行。

SELECT UID FROM TABLEA WHERE EMAIL='abc@gmail.com';

返回UID,然后

SELECT ProductID FROM TABLEB WHERE UID='123456';

将返回ProductID值,其中' 123456'将是第一个查询返回的值。

问题是当组合在一起时,由于某种原因使用变量似乎没有设置@uidd。有什么理由吗?

我在SQL Server 2008上运行它。

1 个答案:

答案 0 :(得分:0)

据推测,uuid长于一个字符。 从不在没有长度的SQL Server中使用字符类型。默认值因上下文而异,可能不正确。

所以,这应该有效:

DECLARE @uidd VARCHAR(255);

SELECT @uidd = UID
FROM PRODUCTOBJECT
WHERE EMAIL='abc@gmail.com';

SELECT ProductID
FROM PRODUCTUIDMAPPING
WHERE UID= @uidd;