在DB2

2013-02-05 31 views
1

使用像在我想使用類似:在DB2

SELECT A.* FROM MYSCHEMA.MYTABLE A, MYSCHEMA.SECONDTAB B WHERE A.COL1 LIKE B.COL1 || '%' 

如何在DB2實現這一目標?

Similar question but without an answer

+0

請始終明確限定你的加入,不要使用隱式連接語法(逗號分隔'FROM'條款)。首先,它使人們更容易找到相關條件(並且不會真正影響計算機)。它還使得處理'LEFT JOIN'更容易。 –

+0

我在這個問題中看到3個答案。而你的代碼沒有'IN'。爲什麼把它放在標題中? –

+0

在涉及的兩個表中的每一個表中,列COL1的數據類型是什麼? –

回答

3

不是很確定你嘗試什麼來實現,但它在DB2中的工作原理。就在LIKE TRIM(B.COL1) || '%'加入TRIM功能,或將其交換到WHERE B.COL1 LIKE TRIM(A.COL1) || '%'

[編輯] 上述工程在AS/400 DB2(或名稱爲何現在叫它)

下面可能與DB2 LUW工作(與測試DB2 V8.2窗口),假定COL1類型= VARCHAR

WHERE SUBSTR(A.COL1,1,LENGTH(A.COL1)) = SUBSTR(B.COL1, 1,LENGTH(A.COL1)) 
+0

不工作!獲取錯誤消息:LIKE謂詞或POSSTR標量函數無效,因爲第一個操作數不是字符串表達式,或者第二個操作數不是字符串。 LOCATE或POSITION標量函數無效,因爲第一個操作數不是字符串,或者第二個操作數不是字符串表達式。 – Nik

+0

@Nikunj Chauhan,請看最新的答案。對不起,最初我只是用as/400中的DB2進行測試,並認爲它適用於其他DB2風格。可能其他人有更好/更容易的回答 – lamLam

+1

這兩個查詢都可以在DB2 LUW v9.7上運行。 在第二個查詢中,第一個SUBSTR表達式是毫無意義的,因爲A.COL1的SUBSTR從1到A.COL1的長度是說A.COL1 –