sql查询结构

我的任务是清理SQL Server 2008 for CS2009中的一些数据。在我们的配置文件数据库中有两个表: 地址 UserObject 地址: address_id,line1,line2 guid,varchar,varchar UserObject: userid_id,addressguids,acitivtydate guid,varchar,datetime 我需要删除所有早于X的UserObject(即没有活动)。这显然不是问题。当我想删除属于该人的地址时,我的问题就来了。它们以连续的方式存储在一个字段中。例如,如果用户有2个地址,它可能看起来像:
2;{guid1};{guid2}
第一个数字是指数,全部由半冒号分隔。 Address表没有user_id可以将其绑定的字段(非常烦人)。地址表中唯一的ID是地址guid。 我的问题是如何在SQL中对此进行排序(我的sql有点差)。我想它会是这样的: 选择activitydate> X的所有用户 拉地址guid字符串分开并得到每个guid 删除地址表中的每个guid 删除用户 我想删除地址可以子串或什么来删除初始数字和分号然后用逗号替换其余的半冒号并将其放入when IN子句。 我不知道循环,最好的方法等等。 谢谢     
已邀请:
我认为分阶段做: 首先为user_address建立一个新表。这应该有user_id和address_guid 然后写一个proc或循环来打破这个新结构的地址guid。 查询它并检查你是否正确。擦拭它然后重新开始,如果你没有。 完成后,使用它来执行删除操作。应该简单得多。     
如果您不想使用新表执行此操作,如前所述(顺便说一下,该答案没有错),那么您可以编写一个表值函数来执行一些字符串操作并返回您的所有guid使用userid在新行上的“addressguids”字段。 完成后,您可以使用CROSS APPLY或OUTER APPLY来加入函数,就好像它是这个technet文章中描述的表一样。     

要回复问题请先登录注册