2016-12-29 28 views
0

所以說,我有一個名爲與存儲字符串列表學生描述一欄描述表...如何串內從不同的表值在SQL替換文本

St_Desc 
Student: Adam/Age: 19/Major: English 
Student: Ben/Age: 22/Major: Biology 

而且我另一臺命名存儲學生信息的信息

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

退房'stuff'功能。 (https://msdn.microsoft.com/en-us/library/ms188043.aspx) –

回答

3

我認爲一個簡單的替換()會做的伎倆在演唱會與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 
+0

@alicem_ct查找字符串中的特定字符串。 LIKE也是一個選項,但是CharIndex可以比不可執行的更好的表現LIKE –

+0

如果我使用了'Insert Into @ t1'這樣的語句,請選擇[dbo]中的St_Desc [描述];一行一行地輸入值?我刷新了我的數據庫,但名稱沒有更改爲其ID。 –

+0

@alicem_ct Declare(at)Table1/2只是演示表變量。將Table1和2替換爲您的實際表名 –

相關問題