1. 程式人生 > >Oracle 判斷字串是否含有漢字

Oracle 判斷字串是否含有漢字

我們知道在資料庫中,漢字佔用兩個位元組,而其他字元佔用一個位元組,這樣通過兩個函式的比較就可以判斷出是否有中文,

length計算字元長度,lengthb計算位元組長度;

select lengthb('a愛中國'),length('a愛中國') from dual;

第一個返回7,第二個返回4,這樣就可以判斷有中文了。

另外一種方法採用ascii的方法

oracle--判斷欄位是不是中文

    在網上找了一種實現方法,試了一下是OK的, 以下語句可以查出包含中文字元的a欄位記錄

Oracle_sql程式碼
  1. 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 ;