所以说我有一个名为Description的表,其中一列存储了列出学生描述的字符串......
St_Desc
Student: Adam / Age: 19 / Major: English
Student: Ben / Age: 22 / Major: Biology
我还有一个名为Info的表,用于存储学生信息
St_Id | St_Name
1000 | Adam
1001 | Ben
因此,对于带有St_Desc列的表,我想用其各自的Id号替换所有名称。所以我要找的结果就是这个..
St_Desc
Student: 1000 / Age: 19 / Major: English
Student: 1001 / Age: 22 / Major: Biology
到目前为止,我尝试将St_Name和St_Id存储在单独的变量中,然后执行UPDATE [dbo].[Description] SET [St_Desc] = REPLACE([St_Desc], @name, @id)
。但这并没有改变任何事情。我不知道如何让REPLACE函数遍历所有名称并用其ID替换它们。我不太熟悉sql脚本,所以请随时详细说明。谢谢。
答案 0 :(得分:3)
我认为一个简单的Replace()可以与JOIN协同工作。
Declare @Table1 table (ST_Desc varchar(max))
Insert Into @table1 values
('Student: Adam / Age: 19 / Major: English'),
('Student: Ben / Age: 22 / Major: Biology')
Declare @Table2 table (St_Id int,St_Name varchar(50))
Insert Into @Table2 values
(1000,'Adam'),
(1001,'Ben')
Select St_Desc = Replace(St_Desc,St_Name,St_ID)
--Update @Table1 Set St_Desc = Replace(St_Desc,St_Name,St_ID)
From @Table1 A
Join @Table2 B on CharIndex(': '+St_Name+' /',St_Desc)>0
如果您对结果感到满意,请取消注释更新并删除 选择
返回
St_Desc
Student: 1000 / Age: 19 / Major: English
Student: 1001 / Age: 22 / Major: Biology