我的本意是象"11   -12-2006 9:00PM"这样的字符把它变成"11-  12-2006 9:00PM"
其中我只想把第一个"-"与前面的字符紧密结合.后序部份无关紧要,因为有段程序就是来处理这个事的.
但我做如下处理,结果得到的还是"11   -12-2006 9:00PM",但是象select @kk='1-'就可以紧密的在一起。
这个问題的引发的这样的。在中文版下面象字符串"nov-11-2006 5:00PM"用
cast("nov-11-2006 5:00PM" as datetime)是会发生string到datetime的转换错誤
但是在英文版下是不会出现这个问韪的,因为这个字符来源不是在一个DATETIME类型的字段里。是一个字符型字段里。里面包括其它类型的數据,当使用WHERE限定一个叫TYPE的字段时,就会得到我所想要的日期數据。然后在视图中用cast(...)的形式来转化.所以为了提高程序的赚容性,特写了一个函數,用来转换这种型式,把它变成11-12-2006 9:00PM的标准形式.对于象11 11 2006 9:00PM的形式我已象做好了,
问鶗是当是这种情况又有空格又有“-”时的情况。,下面的SQL语句大家可以测试下
declare @str nvarchar(30),@pos1 int,@pos2 int,@lens int,@pos3 int,@str1 nvarchar(30),@str2 nvarchar(30)
declare @str3 nvarchar(30),@str4 nvarchar(30),@str5 nvarchar(30),@temp1 nvarchar(30),@temp2 nvarchar(30),@redate datetime
declare @temp5 nvarchar(10),@temp6 nvarchar(30),@temp7 nvarchar(30)
set @str=ltrim('1  - 14- 2006  5:25PM')
set @str5=@str
set @pos1= charindex(' ',@str5,0) if @pos1 >0 --判断是否存在空格,并禁止象"feb  - 15-2006"的格式出现因为里面也有空格
begin
set @lens=len(@str5)
     set @pos2=charindex('-',@str5,0) --再去找"-"的位置
         
      set @temp5=ltrim(left(@str5,@pos2-1)) --找到"-"左边的字符并去掉空格
      select @temp5 as temp5
       set @temp6=ltrim(substring(@str5,@pos2,(@lens-@pos2+1)))
     
       select @temp6 as temp6
      
      select @temp7=@temp5+@temp6+ltrim(substring(@str5,@pos2+2,@lens-@pos2))
       select @temp7=ltrim(substring(@str5,@pos2+2,@lens-@pos2))
        select @temp7 as temp7
       set @temp7=@temp5+@temp6
        select @temp7 as returnss
end