AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RAW Feld richtig auslesen

Ein Thema von Jumpy · begonnen am 29. Mär 2017 · letzter Beitrag vom 1. Apr 2017
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#1

RAW Feld richtig auslesen

  Alt 29. Mär 2017, 14:14
Datenbank: Oracle • Version: 11g • Zugriff über: ADO
Hallo,

ich habe in einer Oracle-DB ein Feld vom Datentyp RAW. Wenn ich mir das mit Substr mal als Text ausgeben lasse, steht darin (Dummy-Besipiel):

003100320033

Ich weiß, dass das dem String 123 entsprechen soll.

Versuche ich dies im SQL als String auszulesen mittels UTL_RAW.CAST_TO_Varchar2(Feld) kommt nichts anzeigbares raus.

Wenn ich mal selber '123' mit UTL_RAW.CAST_TO_RAW('123') in das Feld schreibe steht darin:

313233

Es fehlen also immer die Nullen.

Irgendwie schein mir das ein Charset/Multibyte/irgendwas-Problem zu sein und ich weiß nicht, wie ich jetzt (SQL) aus dem Raw-Feld mit 003100320033 den Inhalt 123 rauskriege. Was muss ich das wie konvertieren vorher?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.954 Beiträge
 
Delphi 12 Athens
 
#2

AW: RAW Feld richtig auslesen

  Alt 30. Mär 2017, 08:04
003100320033

Ich weiß, dass das dem String 123 entsprechen soll.
Tut es auch. $31 ist der hexadezimale Code für 1, siehe Ascii-Tabelle. Und ein Unicodezeichen ist zwei Byte groß, also $0031.

Mit Raw-Feldern habe ich noch nicht gearbeitet und weiß daher nicht wie man die Auslesen kann. Ich hätte es mit FieldByName(...).AsWideString versucht, aber da Delphi 6 damals noch nicht unicodefähig war...
Ansonsten, wenn du es im Speicher jetzt als AnsiString hast mit 0, 0, 3, 1 usw. jeweils als ein Zeichen, könntest du jeweils 4 Zeichen kopieren und mit Chr(StrToInt('$' + Copy(DeinString, 1, 4))) versuchen auszulesen.

Vermutlich gibt es aber auch noch bessere Lösungen.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#3

AW: RAW Feld richtig auslesen

  Alt 30. Mär 2017, 09:14
Zur Klarstellung: Ich möchte das wenn möglich auf SQL-Ebene lösen, nicht in einer Delphianwendung. Hintergrund ist vereinfacht, dass 123 sowas wie ein Fremdschlüssel ist, der auf einen Datensatz in einer anderen Tabelle verweist (ohne das es jetzt tatsächlich ein Fremdschlüssel im Datenbank Sinne als Constraint ist). Die Fremd-Originalanwendung wird das vermutlich wie von jaenicke gedacht irgendwie in der Anwendung lösen, ich würde für eine externe Auswertung da gerne einen Join der zwei Tabellen hinbekommen.
Ralph
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
983 Beiträge
 
Delphi 6 Professional
 
#4

AW: RAW Feld richtig auslesen

  Alt 30. Mär 2017, 12:42
Hmm..

Schom mal mit 'Select cast(<RawdataField> AS NVARCHAR2) from TABLE' versucht?
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#5

AW: RAW Feld richtig auslesen

  Alt 30. Mär 2017, 14:14
Schom mal mit 'Select cast(<RawdataField> AS NVARCHAR2) from TABLE' versucht?
Liefert leider auch nur 003000310032 als "String".
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke
Online

Registriert seit: 10. Jun 2003
Ort: Berlin
9.954 Beiträge
 
Delphi 12 Athens
 
#6

AW: RAW Feld richtig auslesen

  Alt 30. Mär 2017, 14:58
Vielleicht ist UTL_RAW ja das Problem. Vielleicht geht es mit UTL_I18N.RAW_TO_CHAR (DeinFeld, 'AL32UTF8')?
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz