如何對37,65535的字段進行中文模糊查詢

2022-03-01 12:18:25 字數 803 閱讀 5627

在5.2版本中如果使用sql建表並制定字段屬性為ccsid 65535,是可以使用中文的模糊查詢的但如果使用dds建表,利用field level keyword來制定字段屬性為ccsid

(65535),則無法使用中文的模糊查詢,原因是0e/0f控制碼也被當作普通字元使用。

例如r test

--name --a(20)-- ccsid(65535)

建立pf檔案qgpl/test

insert into qgpl/test values('中華人民共和國')

使用query進行模糊查詢

select * from qgpl/test where name like '中%『

系統返回0行紀錄

如果要實現對65535欄位的模糊查詢,必須修改query的寫法:

select * from qgpl/test where hex(name) like subst(hex('中'),1,3)||'%'

返回的結果為

--------中華人民共和國

返回結果正確。

這裡充分考慮了在單位元組環境下對簡體中文的處理過程,即把乙個雙位元組字元(加上0e/0f控制碼)當作4個位元組來處理,而這些位元組包含的資料是無法在單位元組環境下正確解析的。所以,必須使用16進製制的方式來處理。

如果使用者要檢索的是「中華「,則檢索的條件必須寫成:

select * from qgpl/test where hex(name) like subst(hex('中'),1,5)||'%'

因為0e/0f只出現在雙位元組字串的開頭和結尾,所以兩個漢字需要檢索的字元個數是5個。

對list進行多欄位排序

public class multicompare implements comparator 如果多個欄位的排序方向不全一致,可用此方式,格式固定為 field1 1 field2 1 public multicompare string.fields 重寫compare方法 override p...

對Sql Server表字段進行修改

通用式 alter table 表名 add 欄位名 字段屬性 default 預設值 default 是可選引數 增加字段 alter table 表名 add 欄位名 smallint default 0 增加數字字段,整型,預設值為0 alter table 表名 add 欄位名 int de...

根據value欄位對map進行排序

一般來說,我們通常都是通過map中的key欄位進行排序,步驟如下 treemapmap new treemap new comparator 直接新增比較器 public int compare string o1,string o2 但是卻沒有直接的方法能夠進行value排序 1.提取檢視 2.變...