2015-11-06 56 views
0

嗨,大家好,提前致謝。 其實我是SQL新手。我的組表中有一個列名grp_member。 在該值中存儲此格式:18,17,16,94Sql-如何比較列中的逗號分隔值與字符串

當我運行此查詢

`SELECT * FROM GROUP WHERE grp_member IN (18)`  

比我得到的結果

{"Android":[{"grp_id":"1","grp_name":"ggg","grp_created_by":"[email protected]","grp_status":"0","grp_date":"0000-00-00 00:00:00","grp_member":"18,17","result":"Success"}]}  

但是,當我試圖給值後的逗號那麼我的回答是

{"Android":[]}

查詢是相同的只使用通訊後的下一個值一個。

SELECT * FROM GROUP WHERE grp_member IN (17)

+0

你能否提供你正在使用的表的一個例子,也更多地解釋你的意思是當你說「嘗試在逗號後給予價值「? –

+0

哪個RDBMS是爲了這個?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –

+0

CREATE TABLE IF NOT EXISTS'group'( 'grp_id' INT(11)NOT NULL AUTO_INCREMENT, 'grp_name' VARCHAR(255)NOT NULL, 'grp_created_by' VARCHAR(255)NOT NULL, 'grp_img' VARCHAR( 255)NOT NULL, 'grp_status' INT(11)NOT NULL, 'grp_date'日期時間NOT NULL, 'grp_member' VARCHAR(255)NOT NULL, 'tag2' VARCHAR(255)NOT NULL, 'tag3' int(11)NOT NULL, PRIMARY KEY('grp_id') ) 這是我的表格。我試圖從應用程序發送member_id,並希望檢查該成員標識是否存在或不在grp_member列中。我正在使用mysql –

回答

1

使用find_in_set功能,讓您的查詢將是─

SELECT * FROM GROUP WHERE find_in_set('17',grp_member); 
+0

但在單個字段中保留多個逗號分隔值不是一個好主意,因爲它不會使用索引並減慢查詢速度。 –

+0

感謝Zafar對我的工作,我在你的意見中儘量避免使用多個逗號分隔值。感謝您的幫助 –

相關問題