我可能会遗漏一些简单的东西,作为一个比较新的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上运行它。
答案 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;