2017-04-21 39 views
0

從,REGEXP_LIKE在DB2 v7r1(7.1?)

https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/db2/rbafzregexp_like.htm

SELECT PID FROM PRODUCT 
WHERE NOT REGEXP_LIKE(pid,'[0-9]{3}-[0-9]{3}-[0-9]{2}') 

但是當我運行一個類似的命令,

SELECT MYCOLUMN FROM MYTABLE 
WHERE NOT REGEXP_LIKE(MYCOLUMN,'[0-9]{3}-[0-9]{3}-[0-9]{2}') 

我得到

SQL狀態:42601廠商代碼:-104消息:[SQL0104]令牌 無效。有效令牌:<> = <> < =! <!> =

= || < || = IN。原因。 。 。 。 。 :在令牌處檢測到語法錯誤。令牌不是有效的 令牌。有效令牌的部分列表是<> = <> < =! <!=> = < ←= IN。此列表假定該聲明在 標記之前是正確的。該錯誤可能在聲明中較早,但該聲明的語法似乎在此之前是有效的。恢復。 。 。 : 請執行以下一項或多項操作並再次嘗試請求: - 驗證令牌區域中的SQL語句 。 更正聲明。該錯誤可能是缺少逗號或 引號,可能是拼寫錯誤的單詞,也可能與條款的順序相關 。 - 如果錯誤標記爲,更正SQL語句,因爲它不以有效子句結束。

是否有任何理由說明爲什麼這個例子不起作用? IBM v7r1與7.1不一樣嗎?

+0

確認你正在哪個DB2版本: '選擇的getVariable( 'SYSIBM.VERSION')FROM SYSIBM.SYSDUMMY1' 或 'SELECT * FROM SYSIBMADM.ENV_INST_INFO' – Stavr00

+0

無論這些工作=/ –

+0

我SYSIBM .SYSDUMMY1表只有一列IBMREQD,其中一行'Y' –

回答

2

7.1和v7r1是同樣的事情...

正則表達式的支持加入作爲技術更新(TR)9級

從命令行,使用帶有PTF組工作的一部分( WRKPTFGRP)命令

WRKPTFGRP PTFGRP(SF99707) PTFGRPLVL(*INSTALLED) 

另外,您還需要具有用於Unicode的5770-SS1選項#39國際組件。您可以使用顯示軟件資源(DSPSFWRSC)來檢查。

如果沒有安裝,則會看到一條消息:
SQL0204 - QSYS類型中的QQQSVREG *找不到SRVPGM。

+0

SF99707顯示6級,所以謝謝! 感謝您的回答。每天學習更多...安裝該選項上的DSPSFWRSC。 –

+0

請問你是如何發現(或知道)它是TR級別9的一部分? –

+0

我的意思是我現在在[link](https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/IBM%20i%20Technology%20Updates/page/IBM% 20i%207.1%20-%20TR9%20Enhancements)但是...沒有關鍵字TR我迷路了。 –