当前位置: 代码迷 >> Sql Server >> sql截取字符串替换字段解决方法
  详细解决方案

sql截取字符串替换字段解决方法

热度:13   发布时间:2016-04-27 13:22:05.0
sql截取字符串替换字段
item1= '\r\n\r\n\r\n贵阳市公安交通管理局\r\n2011年10月28日\r\n\r\n\r\n', 

item2='2012-2-22 00:00:00', 

id='1CE5D989-1C1E-4667-83D0-FF43AEF41BDB'

我现在想要实现的就是将item1中的n2011年10月28日截取出来,根据ID将item2替换成2011-10-28 00:00:00
该如何写这个sql语句啊,请指教,因为数据太多了,一条一条修改要整死人,请大侠些指教哈。

------解决方案--------------------
数据格式统一吗?
后几位都是
\n2011年10月28日\r\n\r\n\r\n'
这种格式吗
------解决方案--------------------
格式统一吗 不统一的话就没有规律就没办法写
------解决方案--------------------
SQL code
declare @a nvarchar(100);set @a =  '\r\n\r\n\r\n贵阳市公安交通管理局\r\n2011年10月28日\r\n\r\n\r\n'select left(right(@a,24),12)
------解决方案--------------------
探讨

引用:

SQL code
declare @a nvarchar(100);
set @a = '\r\n\r\n\r\n贵阳市公安交通管理局\r\n2011年10月28日\r\n\r\n\r\n'
select left(right(@a,24),12)

\n2011年11月04日\r
这个格式是统一的

------解决方案--------------------
SQL code
declare @a nvarchar(100);set @a =  '\r\n\r\n\r\n贵阳市公安交通管理局\r\n2011年10月28日\r\n\r\n\r\n';declare @b nvarchar(20);set @b = right(left(right(@a,24),12),11)select @bselect convert(datetime,left(@b,4) + '-' + right(left(@b,7),2) + '-' + left(right(@b,3),2))
------解决方案--------------------
SQL code
declare @a nvarchar(100);set @a =  '\r\n\r\n\r\n贵阳市公安交通管理局\r\n2011年10月28日\r\n\r\n\r\n'select left(right(@a,24),12)select left(SUBSTRING(@a,27,27),11)-----------2011年10月28日(1 行受影响)
------解决方案--------------------
探讨

我表达没清楚
item1= '\r\n\r\n\r\n贵阳市公安交通管理局\r\n2011年10月28日\r\n\r\n\r\n',
这个时间是不一定的,有可能其他数据是\r\n2012年11月22日\r\n\r\n\r\n',
我只是想吧item1里的这个时间替换成item2的时间

------解决方案--------------------
SQL code
create function dbo.f_split(    @str    nvarchar(100))returns datetimeasbegin    declare @b nvarchar(20);    declare @date datetime;    set @b = right(left(right(@str,24),12),11)        set @date = convert(datetime,left(@b,4) + '-' + right(left(@b,7),2) + '-' + left(right(@b,3),2))        return @dateendselect dbo.f_split('\r\n\r\n\r\n贵阳市公安交通管理局\r\n2012年10月28日\r\n\r\n\r\n')--更新的时候直接调用函数就行update tb set item2 = dob.f_split(item1) where id = ''
  相关解决方案