charindex函数用法(charindex函数例子)

http://www.itjxue.com  2023-01-26 02:44  来源:未知  点击次数: 

请问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, ',', ''))

(责任编辑:IT教学网)

更多

推荐PowerPoint文章