Oracleは文字列に漢字が含まれているかどうかを判断します.

1260 ワード

データベースでは漢字が2バイト、他の文字が1バイトを占めていることを知っています.これにより、2つの関数の比較で中国語があるかどうかを判断することができます.
lengthは文字長を計算し、lengthbはバイト長を計算する.
select lengthb('a爱中国')、length('a爱中国')from dual;
1つ目は7、2つ目は4と、中国語があると判断できます.
もう1つの方法はasciiの方法を採用する.
oracle--フィールドが中国語かどうかを判断してネット上で実現方法を探して、試してみるとOKで、以下の文は中国語の文字を含むaフィールドの記録を調べることができます
Oracle_sqlコード
  • select * from A where asciistr(a) like '%\%' and instr(a, '\') <= 0; 
  • select * from A where asciistr(a) like '%\%' and instr(a, '\') <= 0;

    文字関数asciistr機能:文字に対応するASCIIコードを返し、非ASCIIコードをUnicodeに変換して先頭シンボル''INSTRメソッドのフォーマットをINSTR(ソース文字列、ターゲット文字列、開始位置、マッチングシーケンス番号)とします.たとえば、INSTR('CORPORATE FLOOR','OR',3,2)では、ソース文字列が'CORPORATE FLOOR'、ターゲット文字列が'OR'、開始位置が3で、2番目の一致項目の位置を取ります.
     
     
     
    select asciistr(prod_name),prod_name, --INSTR(asciistr(prod_name),'\', 1, 1), substr(asciistr(prod_name),1,INSTR(asciistr(prod_name),'\', 1, 1)-1), substr(prod_name,length(substr(asciistr(prod_name),1,INSTR(asciistr(prod_name),'\', 1, 1)-1))+1) from C2M_SALE_STOCK_MOBREPORT_DAY where asciistr(prod_name) like '%\%' and instr(prod_name, '\') <= 0 ;