for c in (*
を選択してください)user_tab_columns t1から
ここで、t1.DATA_TYPE = 'CHAR'
) ループ
即時実行 'alter table ' || c.table_name || ' add g_w_' || c.column_name || ' varchar2(' || c.char_length || ')';
即時実行 'update ' || c.table_name || ' set g_w_' || c.column_name || ' = ' || c.column_name;
即時実行 'update ' || c.table_name || ' set ' || c.column_name || ' = null';
即時実行 'alter table ' || c.table_name || 'modify ' || c.column_name || ' varchar2(' || c.char_length || ')';
即時実行 'update ' || c.table_name || ' set ' || c.column_name || ' = trim(g_w_' || c.column_name || ')';
即時実行 'alter table ' || c.table_name || 'drop columns g_w_' || c.column_name;
ループの終了;
###終わり;###Oracle データベースのテーブル構造内のスペースのような文字を削除する方法
1. まず、比較する前にスペースを削除します (たとえば、名前内のすべてのスペースを削除します):
テーブル名セット xm=replace(xm , ' ') を更新します ;
「 」を含むレコードを見つけたい場合は、関連するステートメントを使用して検索できます。
2. ただし、一部の名前の途中または末尾にスペースに似た文字が削除されていないことが見つかる場合がありますが、それらは明らかに通常のスペースではないため、Tab Jian に問題があるのではないかと考えられます。 。そこで、インターネットで紹介されている TAB キーを削除する方法に従い、chr(9) を使用してスペースバーを置き換えました (TAB キーの ASCII 値は 9)。まず、実験用にスペースのような文字を含むレコードを取得します:
SELECT replace(xm, chr(9) ) from table_name ここで;
この方法を使用すると、実際のタブ キー スペースの一部が削除され、バッチ更新方法が採用されます。
3. しかし、私が遭遇した状況はそれほど幸運ではなく、スペースのようなキーを削除することに失敗しました。どうやってするの?まずこのスペースキーの ASCII コード値を取得してから、chr (ASCII コード値) メソッドを使用して処理することにしました。
①. スペース様キーを含む文字列全体の長さ()を取得し、文字列内のスペース様キーの開始位置とスペース様キーの長さを決定します。
②. スペース キーの ASCII コード値: ascii(substr(xm,n,m)); n はスペース キーの開始位置、m は長さです。
③.SELECT replace(xm, chr (手順 2 で取得した ASCII コード値)) from table_name where;
###問題は解決された。しかし、上記の手順 2 で取得した ASCII コード値が 41377 であることがわかり、これは漢字の ASCII コード値であるはずですが、スペースのように見えたので、中国語のスペース キーと TAB キーではないかと思いました。モード?試してみたところ、そうではないことがわかりました。あと気になるのですが、全角と半角の違いなのでしょうか?というのは、普段文字を半角で入力しているからです。最初の手順「1.比較する前にまずスペースを削除して…」に従い、全角の状態でスペースを入力して検索してみたところ、驚くべき結果が得られました。パラレル接続では、全角モードで入力されたスペースのASCIIコード値が41377であることが確認されました。以上がOracle の CHAR 型データのスペースの問題の解決策は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。