输入:我有一个包含(任意数量)用户提供的字符串的表:
╔═══════╗
║ Value ║
╠═══════╣
║ To ║
║ An ║
╚═══════╝
以及用户详细信息表:
╔════════╦══════════╗
║ UserID ║ UserName ║
╠════════╬══════════╣
║ 12 ║ Tom ║
║ 132 ║ Ann ║
║ 32 ║ Dina ║
║ 2 ║ Mark ║
╚════════╩══════════╝
我需要一个查询来返回用户表中的所有记录,其中输入表中UserName
任何记录的部分字符串匹配。Value
这种情况下的预期输出是:
╔════════╦══════════╗
║ UserID ║ UserName ║
╠════════╬══════════╣
║ 12 ║ Tom ║
║ 132 ║ Ann ║
╚════════╩══════════╝
这应该做你想要的:
输出:
根据您之前的问题SQL query for combination without repitition的上下文,我认为您正在寻找一种方法来查找用户组合并在结果集中同时包含名称和 ID。以下脚本演示了实现此目的的一种方法:
样本数据:
将源数据加载到设置的表中,以便更轻松地查找组合:
利用自然整数具有与我们要查找的组合匹配的位模式这一事实。根据工作表中的项目数确定我们需要的最大整数值:
不要使用 连接组成员
FOR XML PATH
,而是使用 a 列出行中的组合group_id
以标识每个组:部分输出:
你能更具体地说明你想要完成的事情吗?托马斯是对的,看起来您确实想对可以以基于集合的方式完成的事情采取程序方法。
如果您希望获得一组结果,然后为应用程序一次处理一个,我强烈建议您在应用程序中进行基于行的处理。SQL Server 旨在使用集合而不是行。
如果您希望有一个每次调用时都返回下一行的过程。同样,我建议将结果集作为一个整体提取并在应用程序代码中处理基于行的操作。
如果您必须在 t-sql 中执行此操作,那么您将需要一个游标。但是,我强烈建议不要这样做,因为游标是通过痛苦的行操作来实现的,并且游标的性能不是很好。