读书人

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

发布时间: 2012-04-17 15:06:33 作者: rapoo

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 = '' 

读书人网 >SQL Server

热点推荐