您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

使用Sybase SQL Anywhere分割/分解逗号分隔的字符串

使用Sybase SQL Anywhere分割/分解逗号分隔的字符串

就像 Mikael Eriksson 所说的那样, 有两个非常好的解决方案,一个是使用sa_split_list系统过程的解决方案,第二是使用CAST语句的解决方案。

由于sa_split_list不存在Sybase sql Anywhere 9系统过程,因此我进行了sa_split_list系统过程替换(我使用了来自 bsivel 答案的部分代码):

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 long varchar;
  DECLARE position integer;

   CREATE TABLE #str_split_list (
   line_num integer DEFAULT AUTOINCREMENT,
   row_value long varchar null,
   primary key(line_num));

   SET str = TRIM(str) || delim;
   SET position = CHARINDEX(delim, str);

   separaterows:
   WHILE position > 0 loop
       SET str2 = TRIM(LEFT(str, position - 1));
       INSERT INTO #str_split_list (row_value)
       VALUES (str2);
       SET str = RIGHT(str, LENGTH(str) - position);
       SET position = CHARINDEX(delim, str);
    end loop separaterows;

   select * from #str_split_list order by line_num asc;

END

执行sa_split_list认分隔符相同的方法,

select * from

str_split_list(‘1234,23,56,576,1231,567,122,87876,57553,1216’)

或使用可以更改的指定定界符:

select * from

str_split_list(‘1234,23,56,576,1231,567,122,87876,57553,1216’, ‘,’)

sybase 2022/1/1 18:33:47 有527人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶