2011-11-17 63 views
1

我想要得到字符报价(')和双引号(")ASCII/EBCDIC,在IBM DB2 iSeries的。 老实说,我不知道iSeries支持什么 - ASCII或EBCDIC。我尝试了两种,但没有运气。如何获得在IBM DB2 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)字符

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 - CHR in *LIBL type *N not found.

+1

只是'A'有什么问题? –

+0

首先,我想知道如何获得字符ascii/ebcdic,然后将其用于以后使用,并且您知道IBM DB2 iSeries不支持正则表达式。 – MRizq

回答

2

下面是关于SQL character conversion的一些基本信息,可能是很有帮助。

本脚注几乎总结起来:

“字符转换,需要时,是自动的,是透明的应用程序时,它是成功转换的知识,因此,没有必要在所有的字符串因此,对于许多读者来说,字符转换可能是无关紧要的“

CHR函数被添加到V6R1中。

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

+1

当Unicode变得相对无处不在时,QDCXLATE基本上已经过时。由于可能是V3R1,所以[iconv()API](http://pic.dhe.ibm.com/infocenter/iseries/v6r1m0/index.jsp?topic=/apis/iconv.htm)是首选。 – user2338816

+0

我同意最新评论。根据Bob Cozzi的说法,“应该避免使用QDCXLATE在这两个基本字符集之间进行转换。” (http://www.mcpressonline.com/programming/rpg/converting-between-character-sets) – mike

4

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

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

您在线文档的链接适用于Linux,Unix和Windows上的DB2。您希望iSeries Information Centerhttp://publib.boulder.ibm.com/eserver/ibmi.html,或者更具体地说(取决于OS版本中,您正在使用)