一个小问题,如何将多个空格转换为一个空格?如:“如 何将 多个空格转换为一 个空格”要转换为: “如 何将 多个空格转换为一 个空格”注:相连的空格数目不限! declare @ varchar(100) set @='a l p'while charindex(' ',@)>0 set @=replace(@,' ',' ') select @
--解决有tab键 declare @ varchar(100) set @='a l p' while charindex(' ',@)>0 set @=replace(@,' ',' ')将TAB转换为' ' while charindex(' ',@)>0 set @=replace(@,' ',' ')将' '转换为' ' select @ a l p
pwdencrypt是个啥东东啊?
“如 何将 多个空格转换为一 个空格”注:相连的空格数目不限!
declare @ varchar(100)
set @='a l p'while charindex(' ',@)>0 set @=replace(@,' ',' ')
select @
declare @ varchar(100)
set @='a l p'
while charindex(' ',@)>0 set @=replace(@,' ',' ')将TAB转换为' '
while charindex(' ',@)>0 set @=replace(@,' ',' ')将' '转换为' '
select @
a l p
肯定多,长篇大论更多。长篇大论一般来说空格不长,但多。怎么说都不会用懒猫的方法。
同意 caiyunxia,也自我同意一把。哈哈
你们也许没有深层去分析,从表面上看来你们的循环比我的循环次数是要少,但是你们想过replace函数的内部结构是怎么样的吗,我想无非也就是通过left,right,charindex等函数的组合循环找数,这样一来,内循环加外循环就比我的那个循环的次数就要多得多了!经我初步测试证实我的推测是正确的。不信你们可以试试,我想你们都没测试过吧!对于单条的数据用你们的方法要简单,因为可以忽略速度,但是对于它作为一个表中的一个字段,而表中的数据量又比较大时查询时就得考虑速度了!
select ascii(' ')
declare @sql varchar(1000)
set @sql='we3i23 weirwo wewee weiwr e kasd asdf wer sdf sdfk'
select replace(@sql,char(9),' ')
select replace('如 何将 多个空格转换为一 个空格' ,' ','')
列变行可以用case实现
如果行变列有什末好办法?例如:create table t( cName varchar(20),Q1 int,Q2 int ,Q3 int ,Q4 int)
数据为
cname q1 q2 q3 q4
-------------------------------------------
a 10 20 30 40
b 11 21 31 41
c 12 22 32 42 现在转换为:
q a b c
-------------------------------------
q1 10 11 12
q2 20 21 22
q3 30 31 32
q4 40 41 42应该怎末做呢?很早以前有个竹子草的兄弟提出了一个解决办法,可是再找不到那个贴子了。
应该是“行变列可以用case实现 如果列变行有什末好办法?”具体看我的例子吧。谢谢
create table 表(类别 varchar(10),男性 decimal(20,1),女性 decimal(20,1))
insert into 表
select '小说',38.0,59.2
union all select '散文',18.9,30.6
union all select '哲学',16.2,10.2
go--查询处理
declare @s1 varchar(8000),@s2 varchar(8000)
,@s3 varchar(8000),@s4 varchar(8000),@s5 varchar(8000)
,@i varchar(10)
select @s1='',@s2='',@s3='',@s4='',@s5='',@i='0'
select @s1=@s1+',@'+@i+' varchar(8000)'
,@s2=@s2+',@'+@i+'=''性别='''''+name+''''''''
,@s3=@s3+'
select @'+@i+'=@'+@i+'+'',[''+[类别]+'']=''+cast(['+name+'] as varchar) from 表'
,@s4=@s4+',@'+@i+'=''select ''+@'+@i
,@s5=@s5+'+'' union all ''+@'+@i
,@i=cast(@i as int)+1
from syscolumns
where object_id('表')=id and name<>'类别'select @s1=substring(@s1,2,8000)
,@s2=substring(@s2,2,8000)
,@s4=substring(@s4,2,8000)
,@s5=substring(@s5,16,8000)exec('declare '+@s1+'
select '+@s2+@s3+'
select '+@s4+'
exec('+@s5+')')
字段: uid buid
------------------------
1 12
2 12
3 10
4 11
4 12B 表
字段: uid bname
------------------------
10 地瓜日记
12 土豆日记
11 香蕉菠萝 其中 B表的UID 字段 为A表中的 buid 如何查询B表中每条记录 在 A表中 存在的记录的条数呢?select (select count(a.uid) from a where a.buid=b.uid) as '记录数',
b.bname as '菜名'
from b 这样做开销是否太大 ? 有没有更好的解决方法?
http://www.csdn.net/Develop/article/27/27360.shtm
http://expert.csdn.net/Expert/topic/3034/3034445.xml?temp=.2602655有兴趣的过去看看