首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

江湖救急SQL如何进行“字符串”的转化

2012-09-29 
江湖救急,SQL怎么进行“字符串”的转化?SQL语句:declare@DateValue nvarchar(150)declare @DateListSum nvar

江湖救急,SQL怎么进行“字符串”的转化?
SQL语句:

  declare @DateValue nvarchar(150)
  declare @DateListSum nvarchar(150)
  set @DateValue='2010,2011,2012'
  set @DateListSum = 'sum(isnull(' +REPLACE(@DateValue,',',',0)),sum(isnull(') +',0))'

  print @DateValue
  print @DateListSum
  print 'sum(isnull(2010,0)) 2010,sum(isnull(2011,0)) 2011,sum(isnull(2012,0)) 2012'

运行结果:

  2010,2011,2012
  sum(isnull(2010,0)),sum(isnull(2011,0)),sum(isnull(2012,0))
  sum(isnull(2010,0)) 2010,sum(isnull(2011,0)) 2011,sum(isnull(2012,0)) 2012

问题:

  现在的SQL语句中可以将“ 2010,2011,2012”转化为“sum(isnull(2010,0)),sum(isnull(2011,0)),sum(isnull(2012,0))” , 但是怎样转化为“sum(isnull(2010,0)) 2010,sum(isnull(2011,0)) 2011,sum(isnull(2012,0)) 2012” 呢???

  也就是作完“sum”求和后,加上原有的列名,SQL应该怎样处理呢?

[解决办法]
建议你切割字符串再拼爹
[解决办法]

SQL code
 declare @str varchar(max) set @str='2010,2011,2012' create table #a ( name varchar(255) ) declare @s varchar(max) set @s='insert #a select '+''''+REPLACE(@str,',',''''+' union all select '+'''')+'''' --print @s exec(@s) declare @sql varchar(max) set @sql=''select @sql=@sql+' '+'sum(isnull('+name+',0))'+' '+name from #aprint @sql/* sum(isnull(2010,0)) 2010 sum(isnull(2011,0)) 2011 sum(isnull(2012,0)) 2012*/
[解决办法]
SQL code
 declare @str varchar(max) set @str='2010,2011,2012' create table #a ( name varchar(255) ) declare @s varchar(max) set @s='insert #a select '+''''+REPLACE(@str,',',''''+' union all select '+'''')+'''' --print @s exec(@s) declare @sql varchar(max) set @sql=''select @sql=@sql+','+'sum(isnull('+name+',0))'+' '+name from #aselect @sql=right(@sql,len(@sql)-1)print @sql/*sum(isnull(2010,0)) 2010,sum(isnull(2011,0)) 2011,sum(isnull(2012,0)) 2012*/
[解决办法]
你的功底怎么几乎为零 啊,删除表是drop table 啊,#这种开头的临时表正常情况下会自动删除,但是作为实践经验,最好用完手动删除。#是作用在一个【会话】当中,也可以理解为一个链接。或者你在SQLServer Management studio里面新建的一个窗口等等。
[解决办法]
遇到问题时,首先多查查联机丛书,你才会有进步,比如删除表,你打开联机丛书,然后在左下方选【索引】选项卡,然后输入:删除表 就有结果了。
[解决办法]
不能说访问,应该是连接,因为一个连接可能会发起多个操作。都会对数据库做访问。
[解决办法]
我觉得你还是先理解这个方法吧。你的基础搞太多反而会乱掉。
[解决办法]
那就熟练应用吧。凭你刚才的几个问题,我大概也知道你的底子了,还是先打扎实了再算吧。我不想给个新方法你还要回复一大堆,

热点排行