我的任务是为 CS2009 清理 SQL Server 2008 中的一些数据。在我们的配置文件数据库中有两个表:
- 地址
用户对象
地址:
address_id, line1, line2 guid, varchar, varchar
用户对象:
userid_id、addressguids、acitivtydate guid、varchar、日期时间
我需要删除所有早于 X 的用户对象(即没有活动)。这显然不是问题。当我想删除属于那个人的地址时,我的问题就出现了。它们以连接方式存储在一个字段中。例如,如果用户有 2 个地址,它可能看起来像:
2;{guid1};{guid2}
第一个数字是 guid 的数量,全部用分号分隔。Address 表没有用于 user_id 的字段,无法将其绑定回来(非常烦人)。地址表中的唯一 ID 是地址 guid。
我的问题是如何在 SQL 中解决这个问题(我的 sql 有点差)。我想它会是这样的:
- 选择所有活动日期 > X 的用户
- 将地址 guid 字符串分开并获取每个 guid
- 删除地址表中的每个 guid
- 删除用户
我想删除地址可以是子字符串或删除初始数字和分号的东西,然后用逗号替换其余的分号并将其放入 when IN 子句中。
我不知道循环,最好的方法等等。
谢谢