小编Blu*_*ark的帖子

将逗号分隔的字符串字段拆分/分解为 SQL 查询

我有场 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)
  • idinteger

  • id_listvarchar/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 系统过程替换:

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 …
Run Code Online (Sandbox Code Playgroud)

sybase t-sql sybase-sql-anywhere string-splitting

5
推荐指数
1
解决办法
3万
查看次数