我有场 id_list='1234,23,56,576,1231,567,122,87876,57553,1216'
我想用它来搜索IN
这个领域:
SELECT *
FROM table1
WHERE id IN (id_list)
Run Code Online (Sandbox Code Playgroud)
id
是 integer
id_list
是 varchar/text
但是这样就行不通了,所以我需要以某种方式拆分id_list
为选择查询。
我应该在这里使用什么解决方案?我正在使用 T-SQL Sybase ASA 9 数据库 (SQL Anywhere)。但是这样就行不通了,所以我需要以某种方式拆分id_list
为选择查询。
我看到的方式是使用while循环创建自己的函数,并根据分隔符位置搜索拆分每个元素提取,然后将元素插入到临时表中,该函数将作为结果返回。
对 Sebastian Meine 回答及其解决方案的评论:
Sybase SQL Anywhere 9
sa_split_list
系统程序在这里不存在,所以它不起作用
CAST
效果很好Sybase SQL Anywhere 12
sa_split_list
系统程序存在并且运行良好
CAST
效果很好对于 Sybase SQL Anywhere 9,我进行了 sa_split_list 系统过程替换:
Run Code Online (Sandbox Code Playgroud)CREATE PROCEDURE str_split_list(in str long varchar, in delim char(10) default ',') RESULT( line_num integer, row_value long varchar) BEGIN DECLARE str2 …