2017-06-21 89 views
0

之前,我用mySQLfind_in_set(idField,:ids)由逗號,例如隔開IDS刪除或更新多場:如何在SYBASE中使用mySQL的find_in_set?

UPDATE USER SET name = 'a' WHERE find_in_set(id,'1,2,3,4') > 0 

我怎麼可以自定義查詢,並在Sybase使用它?

回答

0

由於Sybase沒有像find_in_set這樣的函數,因此有兩個選項:google,一個將逗號分隔列表解析爲臨時表的函數,或者使用帶有execute-command的動態SQL。

+0

我知道SYBASE不要有FIND_IN_SET。我嘗試調用相同的功能,在sybase – Adam

1

注意:您尚未提及您使用的是哪種Sybase數據庫產品(ASE?SQLAnywhere?IQ?Advantage?),也不是版本。雖然ASE沒有像find_in_set()這樣的東西,但我不能說其他數據庫產品。

從ASE角度來看,你有幾個選擇:

  • 創建自己的用戶定義的函數;你有T-SQL(因爲ASE 15.0.2)和Java選項

  • 構建一個動態查詢,並提交通過的execute()

  • 重寫查詢使用可用ASE功能(例如,PATINDEX() CHARINDEX())

  • 重寫查詢使用操作符(見alternate to find_in_set() for non-MySQL databases爲例)

+0

對不起,我使用ASE,我用IN來解決它。順便說一句,在Java 8我必須使用 'StringJoiner userids = new StringJoiner(「','」,「'」,「'」); userids.add(「id1」); userids.add(「id2」);' 在查詢中調用 – Adam

+0

啊,是的,如果你是硬編碼的列表,然後簡單地重寫查詢使用'in'會(顯然)更容易呃:-) – markp