我需要你们所有人的帮助..
我在SQL数据库中有未知数量的动态表
就像下面一样,
=>User_Master
UserCode UserName
aaa AAA
bbb BBB
=>aaa_EmailInfo
UserCode EmailId
aaa aaa@gmail.com
aaa aaa1@gmail.com
=>bbb_EmailInfo
UserCode EmailId
bbb bbb@gmail.com
bbb bbb1@gmail.com
bbb bbb2@gmail.com
Declare @CheckEmail VARCHAR(500) = 'aaa@gmail.com'
SELECT
User_Master.UserCode,
(SELECT User_Master.UserCode+'_EmailInfo'.EmailId FROM User_Master.UserCode+'_EmailInfo') EmailId
FROM User_Master
下面, User_Master是静态表, 但是,在UsedCode上使用Named动态生成aaa_EmailInfo和bbb_EmailInfo。 现在我想检查@CheckEmail是否存在于动态表中而不是
怎么可能?
任何人都可以建议我SELECT查询???
答案 0 :(得分:0)
您可以使用sp_executesql
。详细信息为HERE您可以使用COUNT(*)来确定表中是否存在@CheckEmail。
DECLARE @CheckEmail VARCHAR(500);
DECLARE @SQLString nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @Cnt int;
SET @CheckEmail = 'aaa@gmail.com';
SET @SQLString = N'SELECT @cntOUT = count(*)
FROM User_Master.UserCode'+'_EmailInfo'+' WHERE EmailID = @CheckEmail';
SET @ParmDefinition = N'@CheckEmail VARCHAR(500), @cntOUT int OUTPUT';
EXECUTE sp_executesql @SQLString, @ParmDefinition, @cntOUT=@cnt OUTPUT;
SELECT @cnt;