有几行数量,数据长度不一,如
152AB01AB1
152AB0102AB1.
现在我想把这二行的数据中的从右边算起第二位的B和第三位的A分别用CD代替,请问高手要怎么处理,谢谢了。注意,同个记录里面AB可能有多个,我只是要替换倒数第二个、第三个的AB字符串。
152AB01AB1
152AB0102AB1.
现在我想把这二行的数据中的从右边算起第二位的B和第三位的A分别用CD代替,请问高手要怎么处理,谢谢了。注意,同个记录里面AB可能有多个,我只是要替换倒数第二个、第三个的AB字符串。
解决方案 »
- 更改IP后 sql server 连不上了,急急急(在线等待)!
- 索引视图问题,高手帮我看下吧
- SQLServer2005中如何设计个税计算
- 如何赋于某数据库用户(如Public)所有用户表的Select和update权限
- 求下载地址
- 连另一台计算机上的SQLSERVER,该如何写?谢谢,在线等!!!!!
- 关于AppModeler for PowerBuilder使用的问题
- 请教一个关于用ACCESS通过ODBC连接MSSQL后打开表的问题?
- sqlserver2000里字段值自动生成问题。(在线等)
- 插入和更新不能同时实现,只能实现一个
- 请教一个关于考勤系统的问题
- 怎样设置不能查询表的某个字段?
-- Author : liangCK 梁爱兰
-- Comment: 小梁 爱 兰儿
-- Date : 2009-07-18 08:48:55
-------------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (col VARCHAR(12))
INSERT INTO @T
SELECT '152AB01AB1' UNION ALL
SELECT '152AB0102AB1' --SQL查询如下:UPDATE @T SET
col = CASE WHEN LEN(col) > 2 THEN
STUFF(col,LEN(col)-2,2,'CD')
ELSE col END;SELECT * FROM @T;/*
col
------------
152AB01CD1
152AB0102CD1(2 行受影响)
*/
declare @str1 varchar(100),@str2 varchar(100)
select @str1='152AB01AB1 ',@str2='152AB0102AB1'
select stuff(@str1,len(@str1)-2,2,'DC'),stuff(@str2,len(@str2)-2,2,'DC')
INSERT TBTEST
SELECT '152AB01AB1' UNION
SELECT '152AB0102AB1'UNION
SELECT '152AB002AB54'SELECT LEFT(STRING,LEN(STRING)-3)+REPLACE(RIGHT(LTRIM(STRING),3),'AB','CD') AS STRING FROM TBTEST
STRING
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
152AB002AB54
152AB0102CD1
152AB01CD1(所影响的行数为 3 行)
这样应该标准点!
首先用While循环,把第二行数据反序排列,然后你就可以用SQL Server里面的Charindex函数和Replace函数了
INSERT INTO @T
SELECT '152AB01AB1' UNION ALL
SELECT '152AB0102AB1' update @t
set col=LEFT(col,LEN(col)-3)+'CD'+RIGHT(col,1)
select * from @tcol
------------
152AB01CD1
152AB0102CD1
的符合我的要求,而且做法比较简单,我决定把分给他