[ORACLE] 檢查字串中是否有中文字
前言 :
因為在某些特別的需求下,資料表欄位的長度可能只會開設到某個特定的數值
但在建立資料的時候可能是英文也有可能會是中文
但又會因為中文字而超出欄位限制,因此在這裡分享一個可以判斷是否有中文字的FUNCTION
原理是利用LENGTH及LENGTHB的特性,去判斷出自串長度是否相同
- LENGTH(string) 計算字符長度 : 返回字符串的長度,單位是字符
- LENGTHB(string) 計算字節長度 : 返回字符串的長度,單位是字節
FUNCTION isenglish (p_str IN VARCHAR2)
RETURN BOOLEAN
IS
v_count PLS_INTEGER;
l_return BOOLEAN;
BEGIN
SELECT COUNT (*)
INTO v_count
FROM (SELECT NVL (LENGTH (p_str), 0) AS len FROM DUAL) a,
(SELECT NVL (LENGTHB (p_str), 0) AS len FROM DUAL) b
WHERE a.len = b.len;
IF v_count > 0
THEN
l_return := TRUE;
ELSE
l_return := FALSE;
END IF;
RETURN l_return;
END isenglish;