Заменить в SQL Server 2008 - PullRequest
       3

Заменить в SQL Server 2008

0 голосов
/ 08 февраля 2012

У меня есть столбец A в таблице с именем T.Столбец имеет тип nvarchar(255).

В этой таблице есть триггер, который обновляет значения в столбце A до столбца B в таблице B.Столбец B имеет тип float.

Предположим, если в столбце A есть значение 35.1 %, я хочу удалить % и обновить только 35.1 в столбце B.Для значения в столбце A необязательно указывать символ %.

Как мне это сделать в SQL Server 2008?Любые идеи и предложения приветствуются!

Ответы [ 5 ]

2 голосов
/ 08 февраля 2012

Вы можете попробовать использовать следующий запрос:

update B
set B.colB = cast(REPLACE(A.colA, '%', '') as float)
from A
where B.idB = A.idA
0 голосов
/ 24 мая 2013
update B
set B.colB = cast(REPLACE(A.colA, '%', '') as float)
from A
where B.idB = A.idA
0 голосов
/ 08 февраля 2012
  --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)))
0 голосов
/ 08 февраля 2012

Если вы хотите получить только числа в строке, попробуйте эту функцию:

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

Вы должны поместить это в свой триггер.Обратите внимание, что вам нужно изменить функцию, чтобы принять.и символы (из-за того, что они действительны в цифрах) = -)

0 голосов
/ 08 февраля 2012

select replace('35.3 %','%','') или select replace('35.3 ','%','') оба вернутся 35.3;просто измените ваш запрос соответственно;что-то вроде:

update tableb
set b=replace(valuefromcola,'%','')
where condition
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...