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个。
  • 相关阅读:
    elasticsearch索引的增删改查入门
    windows下mongodb安装与使用
    在SqlServer中使用Try Catch(转)
    sqlserver 存储过程 try catch TRANSACTION (转)
    SQLserver2008如何把表格变量传递到存储过程中
    SQL对字符串数组的处理
    SQLSERVER数据库表各种同步技术
    函数参数
    闭包
    枚举
  • 原文地址:https://www.cnblogs.com/wildfish/p/1032027.html
Copyright © 2011-2022 走看看