2015-11-06 23 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对我的工作,我在你的意见中尽量避免使用多个逗号分隔值。感谢您的帮助 –

相关问题