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, sa04from 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 valfrom sysobjects
这样查询变成:
select sa01, sa02, 1000 as a03, sa04from 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把已有字段对应的值 拆分为多个字段等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)