Heim >Computer-Tutorials >Computerwissen >Was ist die Lösung für das Problem der Leerzeichen in Daten vom Typ CHAR in Oracle?

Was ist die Lösung für das Problem der Leerzeichen in Daten vom Typ CHAR in Oracle?

WBOY
WBOYnach vorne
2024-01-15 18:21:16961Durchsuche

Was ist die Lösung für das Problem der Leerzeichen in Daten vom Typ CHAR in Oracle?

Gibt es eine Möglichkeit, die Null in Daten vom Typ CHAR in Oracle zu entfernen? Sie können ein Skript verwenden, um alle Felder vom Typ CHAR in den Typ VARCHAR2 zu konvertieren und die Leerzeichen in der Zeichenfolge wie folgt abzuschneiden:

deklarieren

beginnen

für c in (wählen Sie *

von user_tab_columns t1

wobei t1.DATA_TYPE = 'CHAR'

) Schleife

führen Sie sofort 'alter table' || aus. ' add g_w_' || ' varchar2(' || c.char_length || ')'

führen Sie sofort 'update' || aus. ' set c.column_name || ' = ' ||

Sofortiges 'Update' || ausführen. ' set ' || ' = null';

Führen Sie sofort 'Alter Table' || aus. ' Modifizieren ' ||

führen Sie sofort 'update' || aus. ' set ' ||. ' = trim(g_w_' || c.column_name || ')'

Führen Sie sofort 'Tabelle ändern' || aus. ' Spalte g_w_ löschen' ||

Endschleife;

Ende;

So entfernen Sie Leerzeichen in der Tabellenstruktur der Oracle-Datenbank

1. Entfernen Sie vor dem Vergleich zunächst die Leerzeichen (entfernen Sie beispielsweise alle Leerzeichen im Namen):

Tabellennamen aktualisieren set xm=replace(xm, ' ') ;

Wenn Sie herausfinden möchten, welche Datensätze „ “ enthalten, können Sie für die Suche verwandte Anweisungen verwenden.

Dann können Sie vergleichen.

2. Möglicherweise stellen wir jedoch fest, dass sich in der Mitte oder am Ende einiger Namen Leerzeichen befinden, die nicht entfernt wurden. Da es sich jedoch offensichtlich nicht um gewöhnliche Leerzeichen handelt, vermuten wir, dass Tab Jian schuld ist. Deshalb habe ich die im Internet erwähnte Methode zum Entfernen der TAB-Taste befolgt und chr(9) verwendet, um die Leertaste zu ersetzen (der ASCII-Wert der TAB-Taste ist 9). Nehmen Sie zum Experimentieren zunächst eine Schallplatte mit raumähnlichen Zeichen:

SELECT replace(xm, chr(9) ) from table_name where;

Mit dieser Methode werden einige echte Tabulatortasten-Leerzeichen entfernt und dann die Stapelaktualisierungsmethode übernommen.

3. Aber die Situation, die ich erlebte, war nicht so glücklich und ich konnte den Leerzeichenschlüssel nicht entfernen. Wie es geht? Ich habe beschlossen, zuerst den ASCII-Codewert dieser Leertaste abzurufen und ihn dann mit der Methode chr (ASCII-Codewert) zu verarbeiten.

① Ermitteln Sie die Länge () der gesamten Zeichenfolge, die den Leerzeichenschlüssel enthält, und bestimmen Sie so die Startposition des Leerzeichenschlüssels in der Zeichenfolge und die Länge des Leerzeichenschlüssels.

② Der ASCII-Codewert des Leerzeichenschlüssels: ascii(substr(xm,n,m));

③.SELECT replace(xm, chr (ASCII-Codewert, der in Schritt ② erhalten wurde)) aus Tabellenname, wobei;

Problem gelöst. Aber ich habe herausgefunden, dass der in Schritt 2 oben erhaltene ASCII-Codewert 41377 ist. Dies sollte der ASCII-Codewert eines chinesischen Zeichens sein und es sieht aus wie ein Leerzeichen. Ich fragte mich also, ob es die Leertaste und die TAB-Taste auf Chinesisch sein könnten Modus? Nachdem ich es ausprobiert hatte, stellte ich fest, dass dies nicht der Fall war. Ich frage mich auch, ob es der Unterschied zwischen voller und halber Breite ist. Denn grundsätzlich geben wir Zeichen in halber Breite ein. Ich folgte dem ersten Schritt „1. Entfernen Sie zuerst die Leerzeichen, bevor Sie vergleichen ...“ und versuchte, die Leerzeichen in voller Breite einzugeben und zu suchen. Es stellte sich heraus, dass alle Leerzeichen nicht entfernt wurden wurden die Leerzeichen im Vollbreitenmodus eingegeben? Die Parallelverbindung bestätigte, dass das im Vollbreitenmodus eingegebene Leerzeichen den ASCII-Codewert 41377 hat.

Das obige ist der detaillierte Inhalt vonWas ist die Lösung für das Problem der Leerzeichen in Daten vom Typ CHAR in Oracle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:docexcel.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen