如何在SYBASE中使用mySQL的find_in_set?

时间:2017-06-21 07:55:37

标签: mysql sybase

之前,我使用find_in_set(idField,:ids)中的mySQL来删除或更新带有以逗号分隔的ID的多字段,例如:

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

如何自定义查询并在SyBase中使用它?

2 个答案:

答案 0 :(得分:1)

注意:您还没有提到您正在使用的Sybase数据库产品(ASE?SQLAnywhere?IQ?Advantage?),以及版本。虽然ASE没有像find_in_set()这样的东西,但我无法代替其他数据库产品。

从ASE的角度来看,您有几个选择:

  • 创建自己的用户定义函数;你有T-SQL(自ASE 15.0.2起)和Java选项

  • 构建动态查询并通过execute()

  • 提交
  • 重写查询以使用可用的ASE函数(例如,patindex(),charindex())

  • 重写您的查询以使用 like 运算符(有关示例,请参阅alternate to find_in_set() for non-MySQL databases

答案 1 :(得分:0)

由于Sybase没有find_in_set这样的功能,因此您有几个选项:google一个将逗号分隔列表解析为临时表的函数,或者使用带有execute-command的动态SQL。