比较数据库字段中的字符串

问题描述:

你好我有列名称id,receiver_id和更多的表现在我想获取记录,其中sender_id是current_logged用户和receiver_id包含ID中的当前loggend。比较数据库字段中的字符串

意味着receiver_id包含的user_id与分离的字符串,现在我想在那里检查是否USER_ID在receiver_id或不

想我的ID是U112和receiver_id包含字符串U112,U123,U157现在我怎么能检查

我尝试如下,但未能

$selDoc="SELECT * FROM documents WHERE sender_id='U112' OR 'U112' IN (receiver_id) ORDER BY id DESC";

+0

也许需要您的架构。这将是一个全表扫描 – 2013-04-23 10:42:31

+0

我现在不能改变的领域,我必须工作与它只有 – 2013-04-23 10:43:44

str IN (str2)相同str == str2

使用FIND_IN_SET

FIND_IN_SET('U112', receiver_id) 

注意:你应该正常化您的架构。这将是一个全表扫描。

+0

其工作现在感谢 – 2013-04-23 10:56:17

+0

我不能改变数据库,因为它已经生活和运行在服务器 – 2013-04-23 10:56:44

+0

好吧,在某些时候,你必须学习如何更新生产数据库..架构不写在石头上;) – 2013-04-23 10:58:02

,或者您可以使用

receiver_id LIKE "% U112 %" 
+1

格式为'U112,U123,U157',所以不起作用。 – 2013-04-23 10:55:45

+0

它不会工作,因为它给U1122目前的真实 – 2013-04-23 10:55:46

+0

我认为它可能固定与3个数字后信,对不起我的坏:( – enigmaticus 2013-04-23 10:57:27

这可能正常工作:

SELECT * FROM documents WHERE sender_id in ('U112','U113','U113') 

OR

SELECT * FROM documents WHERE sender_id ='U112' and sender_id in ('U112','U113','U113') 

注:我曾在我自己的表,它完美地工作。 例子:

select * from tbl_answers where ques_id in ('69','12','14') 
select * from tbl_answers where ques_id = 69 and ques_id in ('69','12','14') 

你可以尝试这样的:

SELECT * FROM documents WHERE (receiver_id LIKE '%,U112' OR receiver_id LIKE 'U112,%' OR receiver_id LIKE '%,U112,%' OR receiver_id LIKE 'U112')