charindex函数用法(charindex函数例子)
请问sql中CHARINDEX函数如何用,下面用法正确么?
简单来说,CHARINDEX(@a,@b)就是返回@a在@b中的位置,这个官方的说明你可以去查sql帮助文档
但是你下面那段代码会报错,错误出在if那里,sql里面if可不是这么用的
if xxx 里面的xxx 必须是一个bool值,CHARINDEX返回的可不是bool值
SQLserver中字符串查找功能patindex和charindex的区别
CHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置,PATINDEX 可使用通配符,而 CHARINDEX 不可以
CHARINDEX 和 PATINDEX 函数都返回指定模式的开始位置。PATINDEX 可使用通配符,而 CHARINDEX 不可以。
这两个函数都带有2个参数:
1 希望获取其位置的模式。使用 PATINDEX,模式是可以包含通配符的字面字符串。使用 CHARINDEX,模式是字面字符串(不能包含通配符)。
2 字符串值表达式(通常为列名)。
例如,查找模式"wonderful"在 titles 表中 notes 列的某一特定行中的开始位置。
关于SQLSERVER中 SUM() CHARINDEX() 等的现实案例问题,求帮助
1.首先,个人认为你的这个表设计不是很合理,范式高一点的话,水箱有一个基础信息表,水枪有一个基础信息表,然后俩者有一个关系中间表,这算标准模式吧.
再说即使按这种冗余设计的话,你也别把一个水箱对应的多个水枪搞一个字符保存数据吧,这个怎么看怎么别扭.比如你1号水箱对应了 1,3,4这3个水枪, 不要想着一条数据记录这种一对多的关系简单,变成1-1,1-3,1-4这样3条记录,也就不用这样痛苦了
2,既然你都这么干了,我提供一下解决办法吧,我对CHARINDEX() 这个函数用得少,但是大概看了一下,但是和你用的方式用的方式有点不一样,看你放不方便用了.
--首先使用CHARINDEX() 这个函数做一个分割函数,该函数只负责切割
--字符分割函数
create function f_splitstr(@SourceSql varchar(8000),@StrSeprate varchar(100))
returns @temp table(F1 varchar(100))
as
begin
declare @ch as varchar(100)
set @SourceSql=@SourceSql+@StrSeprate
while(@SourceSql'')
begin
set @ch=left(@SourceSql,charindex(',',@SourceSql,1)-1)
insert @temp values(@ch)
set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
end
return
end
----调用select * from dbo.f_splitstr('1,3,4',',')
你会得到1,3,4这样的一个结果集
---然后就好办了,你需要的东西变成了下面这样
--select sum(WR_WEIGHT) from TBL_WATER_RECORD where WR_GUN_NUMBER in(
-- select * from dbo.f_splitst(
-- select WC_GUN_NUM from TBL_WATERCAN where WC_WATERCAN_NUM = 1,',')
--)
--本来到这里就结束了,但是这里引发了另外一个问题,上面这句在f_splitst函数中直接使用子查询,
--貌似有查询优先级的问题,它没有先查询出结果
--而是把这句子查询做为一个参数传入了f_splitst,所以行不通
--那么就使用参数结构吧,最后就变成这样了
declare @gun_num as varchar(1000)
select @gun_num=WC_GUN_NUM from TBL_WATERCAN where WC_WATERCAN_NUM= 1
select sum(WR_WEIGHT) from TBL_WATER_RECORD where WR_GUN_NUMBER in(
select * from dbo.f_splitstr(@gun_num,',')
)
--说真的,这次我被恶心了一次,感觉这不是最优的解决办法吧,但是勉强能用吧,不想伤神了.
在SQLSERVER中如何检测一个字符串中是否包含另一个字符串
SQL语句使用CHARINDEX函数,来测试一个字符串中是否包含另一个字符串中的方法:
一、CHARINDEX函数介绍
1、函数功能:函数返回字符或者字符串在另一个字符串中的起始位置。
2、语法:CHARINDEX ( expression1 , expression2 [ , start_location ] )
3、参数说明:expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。
4、函数返回值:CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。假如CHARINDEX没有找到要找的字符串,那么返回0
二、例:在字符串‘abcdef’中查找字符串‘cd’,运行结果为3,因为C为第3个字符。
sqlserver里有没有类似indexOf功能的函数
sqlserver中和java中indexof类似的函数是字符串函数中的charindex。
CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置。
CHARINDEX函数调用方法如下:
CHARINDEX ( expression1 , expression2 [ , start_location ] )
------------------
一个修改字符串的sql语句用到了charindex,substring等函数的综合使用
update [UpdateString]
set b=
substring(b,0,charindex(',',b,0))+','+
cast(cast(substring(substring(b,charindex(',',b,0)+1,len(b)),
0,charindex(',',substring(b,charindex(',',b,0)+1,len(b)),0)) as int)+2 as varchar)+','+
substring(substring(b,charindex(',',b,0)+1,len(b)),
charindex(',',substring(b,charindex(',',b,0)+1,len(b)),0)+1,
len(substring(b,charindex(',',b,0)+1,len(b))))
? 请问在sql 中,如何用charindex 函数计算A字符串在B字符串出现的次数
参考如下:
Declare @string varchar(1000)
Set @string = 'a,b,c,d'
select len(@string) - len(replace(@string, ',', ''))