2016-04-29 32 views
3

Ich versuche Charaktere wie µ als varchar einfügen, aber es funktioniert nicht, ich Fehlermeldung erhalten, dieWie kann ich Sonderzeichen in die Advantage SQL-Datenbank einfügen?

sagt nicht Unicode-Zeichen Codepage Zeichen

konvertieren, weil es medizinisches Dokument, Ich darf keine Daten ändern. Das Programm wird in vb.net geschrieben, fügt sie csv-Daten in SQL Vorteil, damit ich diese Funktion versuchte

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 

, die UTF-8 in ISO8859 kodiert, aber es nicht wirklich helfen.

Wie kann ich die Daten mit diesen Zeichen einfügen, ohne die Daten zu ändern?

+0

Ich bin nicht vertraut mit dieser Datenbank, aber in anderen Datenbanken, die ich verwendet habe, 'varchar' speichert nur Single-Byte-Zeichen. In SQL Server müssen Sie beispielsweise 'nvarchar' für Doppelbytezeichen verwenden. Hat Ihre Datenbank einen entsprechenden Datentyp? Wenn nicht, dann denke ich, dass Sie die Daten als Bytes und nicht als Zeichen speichern müssen. – jmcilhinney

+0

Advantage Datenbank Server hat nur Char https://devzone.advantagedatabase.com/dz/webhelp/Advantage8.1/server1/adt_field_types_and_specifications.htm – Sparkm4n

Antwort

2

ich weiß nicht, ob dies Ihre Frage beantworten:

Verwenden Abfragen parametrisiert:

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

Sonderzeichen zu entkommen in einem LIKE-Ausdruck Sie sie mit einem Escape-Zeichen voranstellen. Sie können auswählen, welches Escape-Zeichen mit dem Schlüsselwort ESCAPE verwendet werden soll. (Als MSDN Referenzen)

Beispiel dies das Symbol% ​​entkommt, mit \ als Escape-Zeichen:

select * from your_table wo yourcolumnfield wie '% 15 \% off%' ESCAPE '\'

Wenn Sie nicht wissen, welche Zeichen in der Zeichenfolge sein, und Sie nicht möchten, dass sie als Platzhalter behandeln, können Sie alle Platzhalter mit einem Escape-Zeichen voranstellen, zB:

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

(Beachten Sie, dass du musst auch deinem Flucht-Char entkommen. Dann können Sie etwas wie das verwenden:

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

gut, tatsächlich wandelt es nicht wirklich diese Zeichen, aber ich fand glücklicherweise Lösung, die ich gerade hatte Um die Codierung wie hier 1252 zu ändern: Dim iso8859 Als System.Text.Encoding = System.Text.Encoding.GetEncoding (1252) danke trotzdem – Sparkm4n