如何检查字符串中是否存在特定ID

时间:2014-04-15 06:56:31

标签: sql-server

我想在一组多个ID中检查ID是否存在。 实施例

如果ID 5出现在多个ID列表中,例如' 1,2,3,4,5'

6 个答案:

答案 0 :(得分:1)

使用CHARINDEX返回搜索值的索引。

Declare @MyString varchar(50)
Set @MyString  = '1,2,3,4,5'
IF CHARINDEX('5',ContactName) > 0 
 Begin
    Print '5 Exists'
 End
Else
 Begin
    Print  '5 Does not exists'
 End

答案 1 :(得分:0)

select count(*) FROM table where id = '5'; 

如果返回超过0表示它存在。

答案 2 :(得分:0)

SELECT column FROM table WHERE CHARINDEX(',5,',(',' + column + ',')) > 0

Fiddle

答案 3 :(得分:0)

如果你在谈论sql这个查询对你有用,如果你什么都没有,那就意味着搜索id不在其他列表中。

SELECT * FROM journal_pulses WHERE mood_credentials in(2,27)

答案 4 :(得分:0)

在这种情况下,一个好的解决方案可能是使用前导和尾随逗号存储值,如下:

',1,2,3,4,5,'

因此,即使您存储了一个值,也请将其存储为:

',5,'

这将帮助您查找所需的值:

SELECT column FROM table WHERE column like '%,5,%';

或者

SELECT column FROM table WHERE CHARINDEX(',5,',(',' + column + ',')) > 0

此外,使用此解决方案,您可以唯一标识不同的值,前提是字符串不包含重复值。

因此,很容易识别出5,50和350:

',5,50,150,250,350,450,500,'
  

我不确定您是否可以更改值的存储方式。请根据问题的背景阅读这个答案 - 作为起点,而不是复制粘贴解决方案。

答案 5 :(得分:0)

我尝试过这样的事情

DECLARE @item VARCHAR(50)
SET @ExpressionToSearch = '23,12'

SET @item = '23'
SELECT COUNT(*) from dbo.Split(@ExpressionToSearch,',')
  WHERE ',' + (@ExpressionToSearch) + ',' 
    LIKE '%'+@item +'%'

此方案将返回大于0的输出