sql判断字符替换

来自星星的你_ 2014-02-18 02:46:12
举例table1表中有字段code:

code
abc-asd-EA-TF:ASAD
bcda-esa-TF:ASDFASDF

我想将TF的都替换掉 EA-TF的不替换 SQL判断替换的怎么写,求指导
...全文
152 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2014-02-18
  • 打赏
  • 举报
回复
REPLACE(REPLACE(REPLACE(code,'EA-TF','<$$$>'),'TF','XXX'),'<$$$>','EA-TF')
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author  :TravyLee(走自己的路,让狗去叫吧!)
-- Date    :2014-02-18 15:00:20
-- Version:  
--      Microsoft SQL Server 2008 (SP2) - 10.0.4000.0 (X64)   
--	Sep 16 2010 19:43:16   
--	Copyright (c) 1988-2008 Microsoft Corporation  
--	Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)  
--
----------------------------------------------------------------
--> 测试数据:#tb
if object_id('tempdb.dbo.#tb') is not null drop table #tb
go 
create table #tb([code] varchar(50))
insert #tb
select 'abc-asd-EA-TF:ASAD' union all
select 'bcda-esa-TF:ASDFASDF'
go
update #tb
set code=replace(code,'TF','替换字符') 
where CHARINDEX('TF',code)-CHARINDEX('EA-',code)<>3

select * from #tb
/*
code
---------------------------------
abc-asd-EA-TF:ASAD
bcda-esa-替换字符:ASDFASDF
*/
  • 打赏
  • 举报
回复

create table test (code nvarchar(20))
insert into test 
select 'abc-asd-EA-TF:ASAD'
union all
select 'bcda-esa-TF:ASDFASDF'
select case when code like '%EA-TF%' then code 
			when code like '%TF%' then replace(code,'TF','替换字符')
			else code
		end
from test 

發糞塗牆 2014-02-18
  • 打赏
  • 举报
回复
替换成什么样子?
bancxc 2014-02-18
  • 打赏
  • 举报
回复
找出包含 EF的 在找出不包含 EA-TF的替换掉就ok啦 indexof(-EF)>0 and indexof(EA-TF)<0

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧