2011-11-17 65 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版本中,您正在使用)