我需要用另一个数据库表中的值替换字符串的一部分。实际上我需要用电子邮件替换用户ID。
DB1.TABLE1
ID|EMAIL
1 |johndoe; janedoe;
2 |otherguy; johndoe;
DB2.TABLE2
ID|USERID |EMAIL
1 |johndoe |johndoe@test.com
2 |janedoe |janedoe@test.com
3 |otherguy|otherguy@test.com
我的查询
UPDATE
TABLE1
set
EMAIL = TABLE2.EMAIL
from
DB2.TABLE2
where
TABLE1.EMAIL = TABLE2.USERID
如何指定字符串"的一部分"东西?
答案 0 :(得分:1)
有很多关于更改架构的评论......这将是最好的前进方式 看起来你在table1.email中存储的内容实际上是table2中的UserId列表。因此,您需要打破这些ID才能一起加入表格。
如果您绝对必须遵循此路径,那么网站上现有的Q + As将对您有所帮助:
(我已经认识到你正在使用SQL服务器...但如果你搜索我确信你可以找到其他RDBMS的类似答案)
Turning a Comma Separated string into individual rows
和
答案 1 :(得分:0)
我想你需要以下
UPDATE TABLE1
SET EMAIL = (
SELECT TABLE2.EMAIL
FROM TABLE2
WHERE TABLE1.EMAIL LIKE TABLE2.USERID + '%');