2016-05-31 12 views
-1

オラクル表a_abcには、3つの列(name,およびaddress)があります。このテーブルのデータは、txtファイルから抽出されます。番号 '0'で始まる場合、ID列の最初の文字を削除する方法。 VBソリューションが必要です。これは今まで私が行ってきたことです0から始まる場合、最初の文字を削除します。

Private Sub ReadData() 
    Dim rowvalue As String 
    Dim cellvalue(20) As String 
    Dim header As String = "ID" 
    Dim streamReader As IO.StreamReader = New IO.StreamReader("D:\local_costctr.txt") 
    'Reading CSV file content 
    While streamReader.Peek() <> -1 
     rowvalue = streamReader.ReadLine() 
     cellvalue = rowvalue.Split("|") 'check what is ur separator 

     ConnectOracle() 
     mySQLcmd.Connection = myConn 

     If SQL.Length > 0 Then 
      SQL.Replace(SQL.ToString, "") 
     End If 

     SQL.Append("insert into a_abc (name ,ID ,address) ") 
     SQL.Append(" values ('" & cellvalue(0) & "' ,'" & cellvalue(1) & "','" & cellvalue(2) & "') ") 


     Console.WriteLine(header) 
     Console.WriteLine(header.Trim({"0"c}))   


     Try 
      mySQLcmd.CommandText = SQL.ToString 
      mySQLcmd.ExecuteNonQuery() 

     Catch ex As Exception 
      MessageBox.Show("Error " & ex.Message.ToString) 
     End Try 

    End While 
End Sub 

先頭にゼロが複数ある場合は、それらをすべて削除します。

+1

さらに詳しくお試しください:OracleまたはVBのソリューションが必要ですか?これまでに何を試しましたか?予期しない結果やエラーがありますか?最初の文字を削除しようとしているところで、テーブルの構造とコードの関連部分を投稿してください。 – Aleksej

+0

ID値に先行するゼロが複数ある場合はどうしますか? – APC

+0

@Aleksej私はVBで解決策が必要です。私は質問を更新しました。それを確認してください。 – ksytrian

答えて

2

ltrim機能は、トリックを行う必要があります。

SELECT name, LTRIM(id, '0'), address 
FROM a_abc 

EDIT:
今すぐ質問が編集されたことを、私はあなたがそれを照会していない、データの挿入をご参照ください。同ソリューションは、あまりにもかかわらず、insertにも適用することができる:

SQL.Append("insert into a_abc (name ,ID ,address) ") 
SQL.Append(" values ('" & cellvalue(0) & "', LTRIM(" & cellvalue(1) & ", '0'), '" & cellvalue(2) & "') ") 
+1

これはSQLであるため、最もきれいな解決策です。しかし、OPのコードを見ると、彼らはVBコードが必要だと思う。 – APC

+1

@APC編集した質問を見ました。私はまだDBを介して、データベースにトリミングを残すだろう - 私の編集された答えを参照してください – Mureinik

+0

非常に@Mureinikありがとう。出来た – ksytrian

0

あなたはTXTファイルからデータを抽出していて、IDフィールドに遭遇しながら:

For Each line As String In IO.File.ReadAllLines("yourpath") 
     If "myID".Substring(0, 1) = "0" Then 
      'take the "myID" without the leading 0 
      "myID".Substring(1) 
     End if 
    Next 

あなたのケースに応じて、あなたは、あなたのコードの

編集...ヌルのチェックなどが必要になる場合があります: cellvalueを交換してください(1)によるSQL.append中:

IIF(cellvalue(1).Substring(0, 1) = "0",cellvalue(1).Substring(1),cellvalue(1)) 
関連する問題