DB2 like兩個表的字段或like一個變量


DB2中的like的使用是有限制的,它后面不能跟一個變量或者是字段,因此,在存儲過程或SQL語句中就不能like一個變量或一個字段。

比如有兩個表A(a,b,c,d),B(a,b,c,d)。

普遍的用法是:

select * from A where A.b like '%張%'

此語句在任何數據庫都是通用的,

但有時也遇到這種情況:

select A.a,B.b from A,B where A.d like B.d||'%'

此語句在oracle中執行沒有問題,但在db2中就不行,報以下錯誤:

 SQL0132N  LIKE 謂詞或 POSSTR 標量函數無效,因為第一個操作數不是字符串表達式或第二個操作數不是字符串。LOCATE 或 POSITION 標量函數無效,因為第一個操作數不是字符串,或者第二個操作數不是字符串表達式。

此種情況在db2中是使用locate函數,locate用法:

locate(arg1,arg2,pos),在org2中查找arg1第一次出現的位置,pos指明從哪個位置開始查找(省略則從開始查找),如果arg1不為null且查找不到

的話返回0,如果找到則返回大於0的數字。

對於語句:

select A.a,B.b from A,B where A.d like B.d||'%'

在db2中應該修改為:

select A.a,B.b from A,B where locate(B.d,A.d)>0


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM