2016-04-29 7 views
3

、私はvarchar型としてµのような文字を挿入しようとしているが、それは動作しません、私はそれは、医療文書だからAdvantage SQLデータベースに特殊文字を挿入するにはどうすればよいですか?

は、コードページの文字

にUnicode文字を変換することはできませんというエラーメッセージが表示されますデータを変更することはできません。プログラムはvb.netで書かれている私はISO8859でUTF8をエンコードするが、それは本当に助けにはならなかった

Public Shared Function Convert(ByVal input As String) As String 
     Dim OriginalCodierung As System.Text.Encoding = System.Text.Encoding.GetEncoding("utf-8") 
     Dim iso8859 As System.Text.Encoding = System.Text.Encoding.GetEncoding("iso-8859-1") 
     Dim enc As System.Text.Encoding = System.Text.Encoding.Default 

     Dim OriginalBytes As Byte() = OriginalCodierung.GetBytes(input) 
     Dim result As Byte() = System.Text.Encoding.Convert(OriginalCodierung, iso8859, OriginalBytes) 
     Dim s As String = enc.GetString(result) 
     Return s 

    End Function 

この機能をしようとしていたので、それがアドバンテージSQLにCSVデータを挿入します。

データを変更せずにこれらの文字を含むデータを挿入するにはどうすればよいですか?これは、あなたの質問にお答えします場合、私は知らない

+0

私はそのデータベースに精通していませんが、私が使った他のデータベースでは、 'varchar'は1バイト文字のみを格納しています。たとえば、SQL Serverでは、2バイト文字には 'nvarchar'を使用する必要があります。データベースに対応するデータ型がありますか?そうでなければ、文字としてではなくバイトとしてデータを保存しなければならないと思います。 – jmcilhinney

+0

アドバンテージデータベースサーバーには文字のみがありますhttps://devzone.advantagedatabase.com/dz/webhelp/Advantage8.1/server1/adt_field_types_and_specifications.htm – Sparkm4n

答えて

2

:あなたはエスケープ文字とそれらを接頭辞LIKE式での特殊文字をエスケープするには

using (SqlCommand com = new SqlCommand("INSERT INTO your_Table (column) " + 
             "VALUES (@INPUTVALUE)", con)) 
    { 
    com.Parameters.AddWithValue("@INPUTVALUE", @"""%$#@?,.;"); 
    com.ExecuteNonQuery(); 
    } 

使用すると、クエリをパラメータ化。 ESCAPEキーワードで使用するエスケープ文字を選択できます。 (としてMSDN参照)、これは、エスケープ文字として\を使用して、%記号をエスケープ例えば

:ESCAPE

セレクト* your_tableからyourcolumnfield LIKE '%オフ%15 \%' '\'

set @msearchString = replace(
       replace(
       replace(
       replace(@myString,'\','\\'), 
         '%','\%'), 
         '_','\_'), 
         '[','\[') 

(ことに注意してください:あなたが知らない

場合はどのような文字、あなたは例えば、エスケープ文字ですべてのワイルドカード文字を前に付けることができ、あなたの文字列になり、あなたはワイルドカードとして扱う必要はありませんエスケープ文字をエスケープしなければなりません)。

select * from table where yourcolumnfield like '%' + @msearchString + '%' ESCAPE '\' 
+1

実際にはこれらの文字は変換されませんが、幸いにも解決策が見つかりましたEncodingを1252に変更するには、次のようにします。Dim iso8859 As System.Text.Encoding = System.Text.Encoding.GetEncoding(1252) – Sparkm4n