zoukankan      html  css  js  c++  java
  • 如何对37,65535的字段进行中文模糊查询

     在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个。
  • 相关阅读:
    Javascript 之 存储
    Javascript 之 跨域
    Javascript 之 Ajax
    Javascript 之 事件
    流程控制语句
    JS属性操作
    JS效果的步骤
    遍历Map的四种方法
    自动删除ftp自动保存的密码
    IE6下png格式透明图片显示灰色的解决办法.
  • 原文地址:https://www.cnblogs.com/wildfish/p/1032027.html
Copyright © 2011-2022 走看看