sql server将字段拆分:内容如下

sql server将字段拆分:内容如下,第1张

drop table   zz_test 

create table zz_test (id varchar(200) ,nr varchar(405))

insert zz_test

select '内容:',   '1、直肠高 2、急性 3、陈旧 4、高血 5、结肠 6、慢性'

select  aid ,

nr=substring(anr,bnumber,charindex(' ',anr+' ',bnumber)-bnumber)

from zz_test a

join masterspt_values b on btype='P'

where charindex(' ',' '+anr,bnumber)=bnumber

运行结果:

可以拆分的前提是你存储必须是有规律的,否则拆分不出来。比如这个:中间我用一个空格来隔开的。

可以这样来查询:

select sa01, sa02, 1000 as a03, sa04

from table_name s,

(

select 1000 as val

union

select 2000

union

select 3000     

) c

where sa03 >= cval

当然,这里c可以用一个函数来代替,就是1, 2, 3, 4, 这样一个数值的表 可以用这个来代替c:

select row_number() over (order by id) as val

from sysobjects

这样查询变成:

select sa01, sa02, 1000 as a03, sa04

from table_name s,

(

   select row_number() over (order by id) as val

   from sysobjects  -- 这里可以根据需要改成记录数较多的表,就是产生数值列表而已

) c

where sa03 >= cval

那是因为条件

substr(money,1,length(money=6)=1)

=

'人民币'

没有符合条件的数据,所以是null,你用

select

substr(money,1,length(money=6)=1)

,

from

table

看看是什么结果,一般判断字符串里是否保护某些字符,应该用charindex函数才对的。

这要看你的数据库语法中是否有split或类似的切分函数了,如果数据库不支持此函数,再看你的前台编程语言中是否有此函数,如果前台语言也不支持此函数,那么就自己写一个这样的切分函数,自产自销

觉得你还是应该用php去写。非要用mysql本身的话给个参考:

mysql> select  from a;

+------+--------+------+----+

| id   | name   | num1 | bb |

+------+--------+------+----+

|    1 | a,     |    2 |  3 |

|    2 | b,c,   |    2 |  4 |

|    3 | d,e,f, |    2 |  5 |

+------+--------+------+----+

3 rows in set (000 sec)

mysql> delimiter //

mysql> create procedure `strsplit1`(in str3 varchar(2))

    -> begin

    ->  declare i int(10);

    ->  declare j int(10);

    ->  declare k int(10);

    ->  declare str1 varchar(100);

    ->         declare str4 varchar(1000);

    ->  declare str5 varchar(100);

    ->

    ->  select count() into i from a;

    ->  if i!=0 then

    ->          drop table if exists tmp_table1;

    ->          CREATE TEMPORARY TABLE tmp_table1 like a;

    ->  end if;

    ->

    ->  set j=0;

    ->  while j<i do

    ->          select id,name into str1,str4 from a limit j,1;

    ->          select instr(str4,str3) into k from dual;

    ->          if k=0 then

    ->                  insert into tmp_table1(id,name) values(str1,str4);

    ->          end if;

    ->          while k!=0 do

    ->                  select substring_index(str4,str3,1) into str5 from dual;

    ->                  insert into tmp_table1(id,name) values(str1,str5);

    ->                  select mid(str4,k+1) into str4 from dual;

    ->                  select instr(str4,str3) into k from dual;

    ->          end while;

    ->  set j=j+1;

    ->  end while;

    ->

    -> select  from tmp_table1;

    -> end

    -> //

Query OK, 0 rows affected (000 sec)

mysql>  delimiter ;

最后结果:

mysql> call strsplit1(',');

+------+------+------+----+

| id   | name | num1 | bb |

+------+------+------+----+

|    1 | a    | NULL |  1 |

|    2 | b    | NULL |  2 |

|    2 | c    | NULL |  3 |

|    3 | d    | NULL |  4 |

|    3 | e    | NULL |  5 |

|    3 | f    | NULL |  6 |

+------+------+------+----+

6 rows in set (025 sec)

Query OK, 0 rows affected (030 sec)

以上就是关于sql server将字段拆分:内容如下全部的内容,包括:sql server将字段拆分:内容如下、SQL 怎样将数据根据数量字段拆分成同等数量一条一条的记录、数据库的表中写一个sql把已有字段对应的值 拆分为多个字段等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10632982.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存