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个。
  • 相关阅读:
    通过注册表获取计算机相关信息
    GetTickCount()函数
    SystemInfo获取计算机相关信息
    CriticalSection 临界区
    mysql慢查询问题
    mysql show processlist详解
    nginx及php版本号隐藏
    安装psutil模块报错&安装python-devel
    ubuntu ssh重启
    php-fpm配置优化
  • 原文地址:https://www.cnblogs.com/wildfish/p/1032027.html
Copyright © 2011-2022 走看看