我有一個名爲T
的表中有一列A
。該列的類型爲nvarchar(255)
。在SQL Server 2008中替換
此表上有一個觸發器,將列A
中的值更新爲表B
中的列B
。列B
的類型爲float
。
假設如果在A
列值35.1 %
,我要脫光%
只有35.1
在B
列更新。對於A
列中的值,不一定有%
符號。
如何在SQL Server 2008中執行此操作?任何想法和建議都非常感謝!
我有一個名爲T
的表中有一列A
。該列的類型爲nvarchar(255)
。在SQL Server 2008中替換
此表上有一個觸發器,將列A
中的值更新爲表B
中的列B
。列B
的類型爲float
。
假設如果在A
列值35.1 %
,我要脫光%
只有35.1
在B
列更新。對於A
列中的值,不一定有%
符號。
如何在SQL Server 2008中執行此操作?任何想法和建議都非常感謝!
您可以嘗試使用下面的查詢:如果你想在一個字符串中只得到數字試試這個功能
update B
set B.colB = cast(REPLACE(A.colA, '%', '') as float)
from A
where B.idB = A.idA
當我這樣做時,我得到以下錯誤: – SaiBand 2012-02-07 21:55:44
@SaiBand這是錯誤? – Tim 2012-02-07 21:57:40
將nvarchar值'33.6'轉換爲數據類型int.COMMANDTEXT:UPDATE [InterestRatesLookup] SET [Category] = @@ Category,[Term] = @@ Term,[Value] = @@ Title,[Modified] = @@修改,[創建] = @@創建,[創建者] = @@作者,[修改者] = @@編者WHERE [ID] = 69 – SaiBand 2012-02-07 22:01:59
select replace('35.3 %','%','')
或select replace('35.3 ','%','')
都將返回35.3
;只需相應地更改您的查詢;是這樣的:
update tableb
set b=replace(valuefromcola,'%','')
where condition
:
CREATE Function [dbo].[GetNumbersFromString](@Temp VarChar(1000))
Returns VarChar(1000)
AS
Begin
While PatIndex('%[^0-9]%', @Temp) > 0
Set @Temp = Stuff(@Temp, PatIndex('%[^0-9]%', @Temp), 1, '')
Return @TEmp
End
你應該把這在你的觸發器內。請注意,您需要修改該功能才能接受。並且,字符(因爲這些是在數量上有效)= - )
--trim trailing non-alphanumeric chars
DECLARE @input nvarchar(4000)
SET @input = ',,, a word $$$'
SELECT REVERSE(SUBSTRING(REVERSE(@input), PATINDEX('%[a-zA-Z0-9]%', REVERSE(@input)), LEN(@input)))
update B
set B.colB = cast(REPLACE(A.colA, '%', '') as float)
from A
where B.idB = A.idA
如何表T細胞和B有關係嗎?觸發器觸發更新或插入表T?它是將新行插入到表B中,還是僅更新現有行?當T.A中的值無法轉換爲浮點數時,您會做什麼? – 2012-02-07 20:36:52
http://msdn.microsoft.com/en-us/library/ms186862.aspx – msmucker0527 2012-02-07 20:27:33