【问题标题】:How to get ASCII/EBCDIC character in IBM db2 iSeries如何在 IBM db2 iSeries 中获取 ASCII/EBCDIC 字符
【发布时间】:2011-11-17 04:06:21
【问题描述】:

我想在 IBM DB2 iSeries 中获取字符引号 (') 和双引号 (") ASCII/EBCDIC。 老实说,我不知道 iSeries 到底支持什么 - ASCII 或 EBCDIC。我都在尝试,但没有运气。

http://www.simotime.com/asc2ebc1.htm

http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/r0010873.htm

示例:获取 (A) 字符

SELECT * FROM MYTABLE WHERE CUSTOMER_NAME LIKE '%' + CHR(065) + '%'

SELECT * FROM MYTABLE WHERE CUSTOMER_NAME LIKE '%' + CHR(41) + '%'

SELECT * FROM MYTABLE WHERE CUSTOMER_NAME LIKE '%' + CHR(193) + '%'

给我这个错误:

SQL0204 - 未找到 *LIBL 类型 *N 中的 CHR。

【问题讨论】:

  • 首先我想知道如何获取字符 ascii/ebcdic 然后将其用于以后使用,你知道 IBM DB2 iSeries 不支持正则表达式。

标签: db2 ibm-midrange


【解决方案1】:

如果您只是想在由单引号分隔的字符串中添加单引号(撇号),则需要将其加倍,例如 '%''%'。如果要连接,请使用 ||(在 unix 中,称为 2 个“管道”字符),而不是 +(加号)。在您的示例中,您不需要十六进制,但如果您需要,则可以使用 x'C1'(EBCDIC 中的“A”)。

iSeries 通常在大多数情况下都使用 EBCDIC。有一个char() 函数。

您的在线文档链接适用于 Linux、Unix 和 Windows 上的 DB2。您想要http://publib.boulder.ibm.com/eserver/ibmi.html 上的iSeries Information Center,或者更具体地说(取决于您使用的操作系统版本)

【讨论】:

    【解决方案2】:

    这里有一些关于 SQL character conversion 的基本信息可能会有所帮助。

    这个脚注几乎概括了它:

    “当需要时,字符转换是自动的,并且在成功时对应用程序是透明的。因此,当语句执行中涉及的所有字符串都以相同的方式表示时,就没有必要了解转换了. 因此,对于许多读者来说,字符转换可能是无关紧要的"

    在 V6R1 中添加了CHR 函数。

    编码到特定字符集不是一个好习惯,但是您可以使用QDCXLATE API 在 HLL 中执行字符转换。

    【讨论】:

    • 当 Unicode 变得相对普遍时,QDCXLATE 基本上已经过时了。 iconv() APIs 是首选,因为可能是 V3R1。
    • 我同意最后的评论。根据 Bob Cozzi 的说法,“应该避免使用 QDCXLATE 在这两个基本字符集之间进行转换。” (mcpressonline.com/programming/rpg/…)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2015-06-23
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多