表A 的一个 字段S,
里存放的值是"A1;A2;A3;A4"
※说明:这里分号风格的各个值的长度不定,不一定是2位的。但数据的构成,分号肯定是3个。想通过一个SQL语句,把字段S 分割成4份,给select 出来
即得到,
A1,A2,A3,A4 这样4个字段,类似于以分号来split的效果。
※说明:我这个其实是access数据库,所以不能用declare来定义变量,也不能用存储过程什么的。
里存放的值是"A1;A2;A3;A4"
※说明:这里分号风格的各个值的长度不定,不一定是2位的。但数据的构成,分号肯定是3个。想通过一个SQL语句,把字段S 分割成4份,给select 出来
即得到,
A1,A2,A3,A4 这样4个字段,类似于以分号来split的效果。
※说明:我这个其实是access数据库,所以不能用declare来定义变量,也不能用存储过程什么的。
解决方案 »
- sql 如何统计增加 量
- 存储过程变成SQL
- 如何设置“数据库中内容被挂马清除工具”,在线等!
- 如何做一个存储过程来检查sql server中的系统存储过程是否是原始版,没有被篡改过。
- 触发器的问题,各位大侠帮我看看如何写一个这种类型的触发器啊
- *****求一个简单的sql语句求总计和平均*******
- 【急】求SQL语句(三个表进行关联统计查询)
- 用函数,拆分一个串,以表变量形式返回
- 如何解决“文件组Primary已满”的问题??
- 怎么在DataReport中动态在Session1加RptTextBox?(在线等待)
- 存储过程
- 一个类型为varbinary(MAX)字段数据如何转为十进制数据?
parsename(replace(s,';','.'),1),
parsename(replace(s,';','.'),2),
parsename(replace(s,';','.'),3),
parsename(replace(s,';','.'),4)
from A
SELECT Left(col,InStr(col,";")-1) AS 表达式1, Mid(col,InStr(col,";")+1,InStr(InStr(col,";")+1,col,";")-InStr(col,";")-1) AS 表达式2, Mid(col,InStr(InStr(col,";")+1,col,";")+1,InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")-InStr(InStr(col,";")+1,col,";")-1) AS 表达式3,
right(col,len(col)-InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")) AS 表达式4
FROM tb;
create table tb(col varchar(20))
--
insert into tb(col) values('A1;A2;A3;A4')
--
SELECT Left(col,InStr(col,";")-1) AS 表达式1,
Mid(col,InStr(col,";")+1,InStr(InStr(col,";")+1,col,";")-InStr(col,";")-1) AS 表达式2,
Mid(col,InStr(InStr(col,";")+1,col,";")+1,InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")-InStr(InStr(col,";")+1,col,";")-1) AS 表达式3,
right(col,len(col)-InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")) AS 表达式4
FROM tb;
SELECT col,Left(col,InStr(col,";")-1) AS 表达式1,
Mid(col,InStr(col,";")+1,InStr(InStr(col,";")+1,col,";")-InStr(col,";")-1) AS 表达式2,
Mid(col,InStr(InStr(col,";")+1,col,";")+1,InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")-InStr(InStr(col,";")+1,col,";")-1) AS 表达式3,
right(col,len(col)-InStr(InStr(InStr(col,";")+1,col,";")+1,col,";")) AS 表达式4
FROM tb where len(col)-len(replace(col,";",""))=3;