我希望在IBM DB2 iSeries中获得字符引用('
)和双引号("
)ASCII / EBCDIC。
老实说,我不知道iSeries究竟支持什么 - ASCII或EBCDIC。我正在尝试两种,但没有运气。
http://www.simotime.com/asc2ebc1.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。
答案 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中执行字符转换。