2013-09-24 2 views
0

После применения процедуры univot у меня есть столбец Amount, который имеет пробелы и другие символы (например, «-»). Я хотел бы преобразовать эти не-числовые значения в ноль. Я использую процедуру замены, но она только преобразует ее в то время. Кроме того, я пытался использовать следующий скриптSSIS Convert Blank или другие значения Zeros

/**

Public Overrides Sub Input()_ProcessInputRows(ByVal Row As Input()Buffer) 
    If Row.ColumnName_IsNull = False Or Row.ColumnName = "" Then 
      Dim pattern As String = String.Empty 
      Dim r As Regex = Nothing 
      pattern = "[^0-9]" 
      r = New Regex(pattern, RegexOptions.Compiled) 
      Row.ColumnName = Regex.Replace(Row.ColumnName, pattern, "") 
     End If 
End Sub 

**/

, но я получаю error.I не много о сценарии так, может быть, я поместил в неправильное место. Суть в том, что мне нужно преобразовать эти не-числовые значения.

Заранее благодарю вас за помощь.

ответ

1

Обычно я рассматриваю регулярные выражения как отличный способ ввести еще одну проблему в существующую.

Что я сделал, чтобы имитировать вашу проблему, было написать инструкцию select, которая добавила 5 строк. 2 с действительными числами, остальные - пустая строка, строка с пробелами и одна с дефисом.

enter image description here

Я тогда проводной его до компонент сценария и установить колонку, как чтение/запись

enter image description here

Сценарий я использовал это следующим образом. Я проверил, что там есть значение, и если да, я попытался преобразовать значение в целое число. Если это не удалось, я присвоил ему нуль. VB не мой сильный костюм, поэтому, если бы это было сделано более элегантно, отредактируйте мой сценарий.

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
    ' Ensure we have data to work with 
    If Not Row.ColumnName_IsNull Then 
     ' Test whether it's a number or not 
     ' TryCast doesn't work with value types so I'm going the lazy route 
     Try 
      ' Cast to an integer and then back to string because 
      ' my vb is weak 
      Row.ColumnName = CStr(CType(Row.ColumnName, Integer)) 
     Catch ex As Exception 
      Row.ColumnName = 0 
     End Try 

    End If 

End Sub 

 Смежные вопросы

  • Нет связанных вопросов^_^