chaindex(@key,@spilt_string)
位置查找函数@key:表示在字符串中查找的表示符
@spilt_string:表示查找的字符串stuff(@str,@start_pos,@end_pos,@stuff_str)
根据位置把原字符串中的 @start_pos 到@end_pos之间的字符串改成 @stuff_str 字符串@str :要替换的总字符串
@start_pos:替换的起始位置
@end_pos :替换的结束位置
@strff_str:替换成字符串stuff('123456',2,3,'888')
188856
把 234 替换成 888
位置查找函数@key:表示在字符串中查找的表示符
@spilt_string:表示查找的字符串stuff(@str,@start_pos,@end_pos,@stuff_str)
根据位置把原字符串中的 @start_pos 到@end_pos之间的字符串改成 @stuff_str 字符串@str :要替换的总字符串
@start_pos:替换的起始位置
@end_pos :替换的结束位置
@strff_str:替换成字符串stuff('123456',2,3,'888')
188856
把 234 替换成 888
解决方案 »
- 知道table name,怎么确定所在的DB?
- 高分求助:求一个触发器,请指点一下!
- 各位大虾,sql server中只取时间操作?
- 复制表结构,用SQL语句怎么写啊?
- 这个分类视图如何建立?
- ***原创*** oracle数据库转换到Sqlserver的几点经验
- 求一句组合修改语句(先查询后修改)
- 奇怪,exec sp_password更改密码不成功.
- SQL2005存储过程中EXEC sp_executesql的问题急!!!
- 关于在存储过程中使用SQL语句,得到SQLServer数据库安装文件所在目录
- 后缀名为DAY的数据文件转为Excel文件
- 菜鸟求助配置本地数据可以远程访问,在线等!!!
返回字符串中指定表达式的起始位置。 语法
CHARINDEX ( expression1 , expression2 [ , start_location ] ) 参数
expression1一个表达式,其中包含要寻找的字符的次序。expression1 是一个短字符数据类型分类的表达式。expression2一个表达式,通常是一个用于搜索指定序列的列。expression2 属于字符串数据类型分类。start_location在 expression2 中搜索 expression1 时的起始字符位置。如果没有给定 start_location,而是一个负数或零,则将从 expression2 的起始位置开始搜索。返回类型
int
-------------------------------------------------------------
也就是说,在我这里,第一个参数是子串,第二个参数才是母串
正好和你们提供的是相反的?为什么?
set @s=stuff(@s,1,charindex(@split,@s)+@splitlen,'')
declare @s nvarchar(3000)
declare @ss nvarchar(10)
declare @re table(col nvarchar(100))
declare @splitlen intset @s='132,199,999,993,21000,00032188,888'
set @ss=','
set @splitlen=len(@ss)while charindex(@ss,@s)>0
begin
insert @re values(left(@s,charindex(@ss,@s)-1))
set @s=stuff(@s,1,charindex(@ss,@s)+@splitlen-1,'')
--insert @re values(@s)
end
insert @re values(@s)
select * from @re这样返回的是
132
199
999
993
21000
00032188
888 如果改成set @s='132,199,999,993,21000,00032188,888'
set @ss=','
set @splitlen=len(@ss)while charindex(@ss,@s)>0
begin
insert @re values(left(@s,charindex(@ss,@s)-1))
set @s=stuff(@s,1,charindex(@ss,@s)+@splitlen,'')
--insert @re values(@s)
end
insert @re values(@s)
select * from @re结果是这样的132
99
99
93
1000
0032188
88所以我添加了一个1
set @splitlen=len(@split+'a')-2你
set @splitlen=len(@ss)所以你需要-1,原贴不需要