2013-08-24 42 views
2

我想更新我的sql server 2008 r2網絡版數據庫中的行。我需要使用已經在行和concat中的字段?將該字段轉換爲同一行中另一個字段中的字符串。Tsql,有沒有辦法使用行中的現有字段作爲同一行中另一個字段中字符串的一部分來更新行?

這是一個房地產數據庫,我有一個名爲mlsnumber的列,我需要使用mlsnumber字段作爲另一列中的字符串的一部分,名爲photoname的同一行。

在這種情況下mlsnumber = 1234567,我需要添加/更新行,以便photoname = photo + mlsnumber + ' - 01.JPG'(photo1234567-01.jpg)

任何幫助不勝感激。

+0

我認爲你可以使用計算列該 –

回答

2
update table1 set 
    photoname = 'photo' + cast(mlsnumber as nvarchar(max)) + '-01.jpg' 
where mlsnumber = 1234567 

,你也可以只在視圖中選擇這樣的:

create view vw_table1 
as 
    select 
     *, 
     'photo' + cast(mlsnumber as nvarchar(max)) + '-01.jpg' as photoname 
    from table1 
2

這是你想要的嗎?

UPDATE t 
SET  photoname = 'photo' + CAST(misnumber AS VARCHAR(255)) + '-1.jpg' 
WHERE misnumber = 1234567; 

如果你想這樣做的所有行,然後只是刪除where條款。

+0

同樣使用'where'似乎是錯誤的 - 我認爲它應該被忽略。如果只是這一行,就可以像對硬編碼錯誤編號那樣硬編碼照片名稱 – Bohemian

7

假設表被稱爲照片

update photos set photoname = 'photo' + mIsnumber + '-01.jpg' 

如果misnumber不是一個varchar你可以做

update photos set photoname = 'photo' + cast(mIsnumber as varchar(10)) + '-01.jpg' 

如果misnumber爲null,則結果爲空,因此它可能是

update photos set photoname = 'photo' + coalesce(cast(mIsnumber as varchar(10)),'') + '-01.jpg' 

如果您想過濾更新的記錄,您還可以添加where子句。

此外,如果總是會出現這種情況,則可以使用視圖來檢索數據,而不是將其存儲在表中,或者使用表中的計算字段。

2
Update tablename set photoname = 'photo'+mlsnumber+ '-01.jpg' 

這將更新每一行,因此請小心更新。如果要單獨測試更新語句,則可能需要使用begin transaction,運行查詢,檢查結果,然後使用commitrollback

如果你需要轉換mlsnumber,見鏈接http://msdn.microsoft.com/en-us/library/ms187928.aspx

相關問題