2017-07-18 4 views
2

Ich brauche eine Zeichenspalte zu reinigen und für die ich bin mit REGEXP_REPLACE Funktion in Teradata 14.Fehler: String enthält einen unübersetzbar Charakter - TERADATA (für REGEXP_REPLACE Betrieb)

Das gleiche Stück Code für einige gearbeitet andere Datenquelle (mit der gleichen LATIN-Codierung).

Die Datendefinition zeigen Tabelle hat mich unter Format der Daten gegeben:

CREATE SET TABLE pp_oap_cj_t.dc_loss_fdr_kn ,NO FALLBACK , 
    NO BEFORE JOURNAL, 
    NO AFTER JOURNAL, 
    CHECKSUM = DEFAULT, 
    DEFAULT MERGEBLOCKRATIO 
(PARENT_ID DECIMAL(38,0), 
FS_MRCH_NM VARCHAR(25) CHARACTER SET LATIN NOT CASESPECIFIC 
) PRIMARY INDEX (PARENT_ID); 

Die Abfrage I ist als unten am auszuführen:

CREATE TABLE pp_oap_pb_piyush_t.CHECKMERCHANT1 AS (
SELECT 
FS_MRCH_NM, 
REGEXP_REPLACE(trim(Upper(trim(REGEXP_REPLACE((FS_MRCH_NM) , '[^a-z]',' ',1,0,'i')))), '[[:space:]]+',' ',1,0,'i') as cleaned_merchant 
FROM pp_oap_pb_piyush_t.CHECKMERCHANT) 
    WITH DATA PRIMARY INDEX (FS_MRCH_NM); 

Fehler

CREATE TABLE Failed. 6706: The string contains an untranslatable character. 

Ich brauche eine schnelle Wende diesen Engpass.

Hilfe wird wirklich geschätzt! Danke !!!!

+0

Könnten Sie bitte Ihren Code in einem Codeblock formatieren? Es ist schwer zu analysieren, was deine Anfrage ist. – nico

+0

Formatierte es ein bisschen. Hoffe es ist jetzt klar. Danke –

+0

Was ist der Zeichensatz in deiner Checkmerchant-Tabelle? Du zeigst eine andere Tabelle. – Andrew

Antwort

2

REGEXP_REPLACE unter der Haube konvertiert Zeichensatz Latein zu Unicode. Sie haben Ihre Variable als Zeichensatz Latein definiert. Sie sehen den Fehler, wenn Daten etwas haben, das nicht von Latein in Unicode konvertiert werden kann. Am besten reparieren Sie Ihre DDL so, dass der Zeichensatz Unicode anstelle von Latein ist. etwas wie TRANSLATE (FS_MRCH_NM LATIN_TO_UNICODE WITH ERROR) in Ihrem Code anstelle von FS_MRCH_NM sollte funktionieren. Problem mit diesem Ergebnis ergeben Nullwerte, wenn Sie unübersetzbare Zeichen haben.

+0

Hallo Kiran, Wirklich schätze die Hilfe! Ich habe die vorgeschlagene Lösung verwendet, aber immer noch den gleichen Fehler werfen. Was könnte der wahrscheinliche Grund sein? Danke! –

+0

Hallo Kiran, Ich sollte mich selbst korrigieren. Es funktionierte! Nur eine Sache, es sollte LATIN_TO_UNICODE sein. Noch einmal, schätze die Hilfe! Vielen Dank !!!!!! –

+0

Hallo Piyush, änderte LATIN_TO_UNICODE in der Antwort. Wenn Sie der Meinung sind, dass die Antwort Ihnen geholfen hat, dann akzeptieren Sie es bitte als Lösung. – Kiran