You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中CHARINDEX查找拼接字符串返回0的问题咨询

问题分析与解决办法

哦,我一眼就发现问题所在了——你把CHARINDEX函数的参数顺序搞反啦!

核心问题:CHARINDEX的参数顺序搞反了

在SQL Server中,CHARINDEX的语法规则是:

CHARINDEX ( expressionToFind , expressionToSearch [ , start_location ] )

简单来说:

  • 第一个参数是你要查找的目标字符串(比如你要找的'12')
  • 第二个参数是要在其中搜索的源字符串(比如你拼接出来的,12,)

你当前的语句是:

SELECT CHARINDEX(CONCAT(',',car,','),'12') AS carindex FROM drivers WHERE id=38

这相当于让SQL Server在'12'这个字符串里找,12,,显然找不到,所以返回0。

修正后的语句

把参数顺序调换过来就可以得到预期结果了:

SELECT CHARINDEX('12', CONCAT(',', car, ',')) AS carindex FROM drivers WHERE id=38;

执行这条语句后,返回值会是2(因为SQL Server的字符串索引从1开始计数,,12,里的'12'起始位置是第2位)。

另外补充一点:因为car是INT类型,你直接用12(不加单引号)也能正常工作,SQL Server会自动做隐式类型转换,不过推荐始终用单引号包裹字符串查找目标,这样语义更清晰,也能避免一些潜在的类型转换问题。

内容的提问来源于stack exchange,提问作者Ali Sheikhpour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:27:43