2014-04-15 127 views
0

我想檢查一個ID是否存在或不在一組多個ID中。 實施例如何檢查特定ID是否存在於字符串中

如果ID 5是存在於像 '1,2,3,4,5'

+2

如果可能更大,改變你的設計。 SQL有一個數據結構*專用*來存儲一組值,並且您在這裏沒有使用它。它被稱爲表格。 –

回答

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

多個ID列表如果返回大於0意味着它的存在。

+0

我沒有任何表 –

+0

@ user1280492這就是你的問題。它應該是一個表:) – Luaan

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

Fiddle

+0

如果列表是'1,2,35,4,6',那麼它將返回true,這可能不是所期望的。 –

+0

@Damien_The_Unbeliever感謝您的領導。 – Mihai

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

如果我將@MyString ='1,2,3,4,50'然後我將檢查IF CHARINDEX('5',ContactName)> 0,然後它也會打印'5存在' –

+0

正是......此功能不檢查完全匹配 –

+0

是的。它會在這種情況下失敗。 – Oasis

0

如果你正在談論的SQL此查詢會爲你工作,如果你什麼都不拿就意味着搜索ID不存在在列表中其他那裏。

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

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,' 

我不知道,如果你可以改變這些值是如何被保存。請根據問題的背景閱讀本答案 - 作爲一個起點,而不是複製粘貼解決方案。

0

我已經試過這樣的事情

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

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

此方案將返回輸出比0

相關問題