declare @N nvarchar(100)
set @N = 'abc'
set @S = 'ABC abc ABC abc'set @S = resplace( @S, @N, '['+ @N + ']' )结果是成了 [abc] [abc] [abc] [abc]
而我想保持以前的大小写格式,请问怎么做
set @N = 'abc'
set @S = 'ABC abc ABC abc'set @S = resplace( @S, @N, '['+ @N + ']' )结果是成了 [abc] [abc] [abc] [abc]
而我想保持以前的大小写格式,请问怎么做
解决方案 »
- sqlserver里的大数据(ntext)导入db2的clob字段
- 菜鸟 存储过程 变量的问题
- 用ADO连接SQLServer时,怎样设定密码?
- 我的游标不听话!!!!
- 去掉列自增属性的Sql语句?
- 四个表连接,count问题~~~
- ---------------kill 函数问题--------------
- MSSQL同一条记录同一个字段中,保存多个文件路径,如何分隔它们?
- sql server2000数据库自动备份加自动压缩,请问我该怎么实现,先谢谢了,挺急的
- ORACLE的PL/SQL的exception问题
- 用存储过程怎么实现BOM的嵌套调用问题!
- 对于bit类型的数据,且记录有近200W,该如何优化查询?非常谢谢!!
set @S = 'ABC abc ABC abc'
set @S = '[' + replace(@S,' ','][') + ']'
select @S
set @S = 'ABC abc ABC abc'
set @S = '[' + replace(@S,' ','][') + ']'
select @S
declare @S nvarchar(100)
set @S = 'ABC abc ABC abc'
set @S = '[' + replace(@S,' ','] [') + ']'
select @S
---结果:
/***
[ABC] [abc] [ABC] [abc]
***/
因为sql不区分大小写,想在替换的时候保持原来的大小写格式,等于就是在匹配的字符串前后加个"[]",又希望速度快。
@str1 varchar(8000), --源字符串
@str2 varchar(100), --目标字符串
@str3 varchar(100), --替换源字符串中目标字符串为当前串,缺省表示不替换
@str4 varchar(100), --字符串左侧添加字符串
@str5 varchar(100)) --字符串左侧添加字符串
returns varchar(8000)
as
begin
declare @ret varchar(1000)
set @ret=''
while charindex(@str2,@str1)>0
begin
set @ret=@ret+left(@str1,charindex(@str2,@str1)-1)+@str4+isnull(@str3,substring(@str1,charindex(@str2,@str1),len(@str2)))+@str5
set @str1=stuff(@str1,1,charindex(@str2,@str1)+len(@str2)-1,'')
end
return @ret
end
godeclare @n varchar(100),@s varchar(1000)
set @n = 'abc'
set @s = 'ABC abc ABC abc'
select dbo.f_str(@s,@n,null,'[',']')/*
---------------------------------------
[ABC] [abc] [ABC] [abc]
*/drop function f_str
set @S = 'abC abc ABC abc'
set @S = '[' + replace(@S,' ','][') + ']'
select @S
set @S = 'abC abc ABC abc'
set @S = '[' + replace(@S,' ','][') + ']'
select @S