如何在IBM db2 iSeries中获取ASCII / EBCDIC字符

时间:2011-11-17 04:06:21

标签: db2 ibm-midrange

我希望在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

示例:get(A)character

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。

2 个答案:

答案 0 :(得分:4)

如果您只是尝试在单引号分隔的字符串中添加单引号(撇号),则需要将其加倍,例如'%''%'。如果要连接,请使用||(在unix中,称为2“管道”字符),而不是+(加号)。在你的例子中你不需要十六进制,但是如果你有,那么这样做的方法就是x'C1'(EBCDIC中的'A')。

iSeries通常使用EBCDIC来处理大多数事情。有一个char()函数。

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

答案 1 :(得分:2)

以下是有关SQL character conversion的一些基本信息,可能会有所帮助。

这个脚注几乎总结了一下:

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

在V6R1中添加了CHR功能。

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