我正在尝试构建一个动态 sql 查询。
我有一个字段,它是一串以管道分隔的 Guid。
我想执行一个查询,在该字段中查找所有具有 Guid 的用户。
在下面的示例中,我刚刚添加了几个虚拟 GUID 作为示例。我的第二个查询按我的意愿工作。我使用 REPLACE 函数的第一个查询不起作用。如果我只执行 Replace Select 它会返回我在第二个查询中的内容,所以我希望它返回相同的结果。有人可以帮我解决我在这里缺少的东西吗?谢谢。
select * from CMS_User
WHERE Convert(varchar(36),UserGUID) IN(
select '''' + REPLACE('6415B8CE-8072-4BCD-8E48-9D7178B826B7|AEDD6E3F-61C1-46CF-B2D4-750180036FFF','|',''',''') + ''''
)
select *
from CMS_User
WHERE Convert(varchar(36),UserGUID) IN('6415B8CE-8072-4BCD-8E48-9D7178B826B7','AEDD6E3F-61C1-46CF-B2D4-750180036FFF')
更新:这里有一些 SqlFiddle 查询来进一步展示我在做什么。
全选显示 2 条记录 http://sqlfiddle.com/#!3/a5e426/5
使用硬编码子查询选择 http://sqlfiddle.com/#!3/a5e426/6
选择用管道分隔的 Guid 尝试替换 IN 子查询 http://sqlfiddle.com/#!3/a5e426/7
子查询选择以显示我得到了我想要的 http://sqlfiddle.com/#!3/a5e426/8