oracle 判斷值中是否存在漢字

2021-06-26 09:37:26 字數 1349 閱讀 3514

with x as

(select '2320*fd少df,' sr

from dual

union all

select '¥@().' sr

from dual

union all

select 'heleo;""' sr

from dual

union all

select '年' sr

from dual

union all

select 'ds★強f' sr

from dual

union all

select '350k, 。' sr

from dual

union all

select 'a #@%&*則 df

' sr

from dual

union all

select 'dsa~!國強' sr

from dual

union all

select '龘楇覢' sr

from dual)

select sr

from (select regexp_replace(regexp_replace(sr, '\w'), '[a-za-z0-9_]') sr

from x)

where sr is not null;

之前有遇到查詢表裡某列是否含有漢字的需求。

ascii

字串)。利用漢字是雙位元組,且簡體漢字的編碼範圍是b0a1 - f7fe ,通過asciistr(col) 轉換utf-16格式 過來後,每個漢字前面帶有乙個 反斜槓 來判斷的。這樣一點都不科學。簡體漢字轉換過來帶有反斜槓,不代表轉換過來的帶有反斜槓的一定是簡體漢字。比如五角星、全形字符之類的。還有這裡一直說的是簡體漢字。遇到繁體字就gg思密達了。

還有一些人寫了很複雜的function來判斷。這個我也試過了,遇到全形和某些繁體字也是行不通。

還有的使用length()與lengthb()來判斷,也是利用漢字是雙位元組。這個更是錯的。全、半形的長度都能推翻。

select length('-') lg, --半形橫槓

lengthb('-') lg2, --全形橫槓

asciistr('國') sr, --轉換中文簡體

asciistr('f') sr2 --轉換全形字符

from dual;

一直提倡,寫出來的sql,一定是通用的。這裡我是利用正則寫了乙個很簡單的濾除。大家可以參考下,利用的是 \w:匹配字母或數字或下劃線或

漢字。目前我測試還是沒出現問題的。大家使用時遇到問題可以告訴我。

判斷陣列是否存在某個值。

檢查陣列是否包含某個值的方法 使用list public static boolean uselist string arr,string targetvalue 使用set public static boolean useset string arr,string targetvalue 使用迴...

Oracle 判斷列 表 主鍵是否存在

declare n count number 宣告變數儲存要查詢的表是否存在 begin select count 1 into n count from user tables t where t.table name upper 表名 從系統表中查詢當表是否存在 if n count 0then...

php在陣列中判斷某個值是否存在

php在陣列中查詢指定值是否存在的方法有很多,記得很久以前我一直都是傻傻的用foreach迴圈來查詢的,下面我主要分享一下用php內建的三個陣列函式來查詢指定值是否存在於陣列中,這三個陣列分別是 in array array search array key exists 首先分別介紹一下各自的定義...