SQL2005 列遍历 去不规则空格 拆分截取

简介:
create   table  # temp
(
  id 
int   identity ( 1 , 1 ),
  zise 
nvarchar ( 200 )
)
declare   @zise   nvarchar ( 200 )
declare   @n          int
declare   @rows       int
select   @n = 1
insert  # temp (zise)  select  prosize   from  tt
select   @rows   =   @@rowcount
while   @n   <=   @rows
begin
select   @zise   =  prosize 
from  tt
     
where  prosize = ( select  zise  from  # temp   where  id  =   @n )

--  对字段里面不规则空格进行化为一个空格
set   @zise = ltrim ( @zise )
set   @zise = rtrim ( @zise )
    
while   charindex ( '    ' , @zise ) <> 0
         
begin
            
set   @zise = replace ( @zise , '    ' , '   ' )
        
end
-- insert into #temp(zise) values (@zise) --原临时表追加插入
update  # temp   set  zise = @zise   where  id = @n    -- 更新
-- print(@zise)  
select   @n   =   @n   +   1
end
select   *   from  # temp
drop   TABLE  # temp

/*
结果:
44    1975*990*110            1740*1010*100
45    1975*990*110            1740*1010*100
46    1975*990*110            1740*1010*100
47    1010*920*190           1940*1010*110
48    1010*920*190           1940*1010*110
****
变成:
27    1010*920*190 1940*1010*110
28    1010*920*190 1940*1010*110
29    1010*920*190 1940*1010*110
30    1010*920*190 1940*1010*110
*/


/*
字段(size):
1    aa
2    bb cc
*/

-- 可以通过 因为 bb cc 之间有空格
select   LEFT (zise, CHARINDEX ( '   ' ,zise) - 1 AS  A  from  # temp   where  id  = 2  

select   LEFT (zise, CHARINDEX ( '   ' ,zise) - 1 AS  A  from  # temp  
-- 传递到 SUBSTRING 函数的长度参数无效。因为有些行没有空格 如第一行

-- 解决:

-- 取第一个
select   LEFT (zise, CHARINDEX ( '   ' ,zise + '   ' ) - 1 AS  A  from  # temp  
-- 取第二个 中间不规则空格
select   ltrim ( rtrim ( substring (zise, CHARINDEX ( '   ' ,zise + '   ' ), len (zise + '   ' ) - CHARINDEX ( '   ' ,zise) + 1 )))  as  A  from  # temp

select   substring (zise, CHARINDEX ( '   ' ,zise + '   ' ), len (zise + '   ' ) - CHARINDEX ( '   ' ,zise) + 1 as  A  from  # temp





-- 临时表 + While循环  对列进行遍历
create   table  # temp
(
  id 
int   identity ( 1 , 1 ),
  zise 
nvarchar ( 50 )
)
declare   @zise   nvarchar ( 50 )
declare   @n          int
declare   @rows       int
select   @n = 1
insert  # temp (zise)  select  prosize   from  tt
select   @rows   =   @@rowcount
while   @n   <=   @rows
begin
select   @zise   =  prosize 
from  tt
     
where  prosize = ( select  zise  from  # temp   where  id  =   @n )
print ( @zise
select   @n   =   @n   +   1
end
drop   TABLE  # temp
/*
结果:
(169 行受影响)
1940*1050*135
1940*1050*135
1940*1050*135
1940*1050*135
1940*1050*135
1940*1050*135
.
*/




-- 游标(Cursor) + While循环 对列进行遍历

declare   @size   nvarchar ( 50 )
declare  pcurr  cursor   for
select  prosize   from  tt
open  pcurr
fetch   next   from  pcurr  into   @size
while  ( @@fetch_status   =   0 )
begin
 
print  ( @size )
 
fetch   next   from  pcurr  into   @size
end
close  pcurr
deallocate  pcurr 

/*
结果:
1940*1050*135
1940*1050*135
1940*1050*135
1940*1050*135
1940*1050*135
1940*1050*135
1940*1050*135
1940*1050*135
.

*/


    本文转自曾祥展博客园博客,原文链接:http://www.cnblogs.com/zengxiangzhan/archive/2009/11/05/1596486.html,如需转载请自行联系原作者


相关文章
|
10天前
|
SQL 存储 关系型数据库
MySQL数据库进阶第二篇(索引,SQL性能分析,使用规则)
MySQL数据库进阶第二篇(索引,SQL性能分析,使用规则)
|
1月前
|
SQL 机器学习/深度学习 算法
SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据
|
9月前
|
SQL 数据处理 数据库
时序数据库 TDengine SQL 查询语法规则汇总,官方教程奉上!
TDengine 采用 SQL 作为查询语言,本文将就部分查询细则做分析。
355 1
|
1月前
|
SQL 关系型数据库 MySQL
[MySQL]SQL优化之索引的使用规则
[MySQL]SQL优化之索引的使用规则
|
1月前
|
SQL Oracle 关系型数据库
SQL FOREIGN KEY 约束- 保障表之间关系完整性的关键规则
SQL FOREIGN KEY 约束用于防止破坏表之间关系的操作。FOREIGN KEY 是一张表中的字段(或字段集合),它引用另一张表中的主键。具有外键的表称为子表,具有主键的表称为被引用表或父表。
94 0
SQL FOREIGN KEY 约束- 保障表之间关系完整性的关键规则
|
1月前
|
SQL 关系型数据库 MySQL
SQL编程【MySQL 01】拆分列字段为行并根据类型翻译字段 > 1305 - FUNCTION x.help_topic_id does not exist 报错问题
SQL编程【MySQL 01】拆分列字段为行并根据类型翻译字段 > 1305 - FUNCTION x.help_topic_id does not exist 报错问题
50 0
|
10月前
|
SQL
sql server的拆分和合并
sql server的拆分和合并
59 0
|
11月前
|
SQL 存储 数据库
SQL Server——规则是什么?规则和约束有什么不同?
是单独的SQL Server对象,可以关联到一个或几个表中的一列或几列。它可以使用多种方式来完成对数据值的检验,可以使用函数返回验证信息,也可以使用关键字BETWEEN、LIKE和IN完成对输入数据的检查
|
11月前
|
SQL 存储 XML
数据库视频第四章(sql server 2008数据类型、对于表的管理、规则的创建与删除)
数据库视频第四章(sql server 2008数据类型、对于表的管理、规则的创建与删除)
78 0