比较数据库字段中的字符串
你好我有列名称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";
str IN (str2)
相同str == str2
。
使用FIND_IN_SET:
FIND_IN_SET('U112', receiver_id)
注意:你应该正常化您的架构。这将是一个全表扫描。
其工作现在感谢 – 2013-04-23 10:56:17
我不能改变数据库,因为它已经生活和运行在服务器 – 2013-04-23 10:56:44
好吧,在某些时候,你必须学习如何更新生产数据库..架构不写在石头上;) – 2013-04-23 10:58:02
,或者您可以使用
receiver_id LIKE "% U112 %"
格式为'U112,U123,U157',所以不起作用。 – 2013-04-23 10:55:45
它不会工作,因为它给U1122目前的真实 – 2013-04-23 10:55:46
我认为它可能固定与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')
也许需要您的架构。这将是一个全表扫描 – 2013-04-23 10:42:31
我现在不能改变的领域,我必须工作与它只有 – 2013-04-23 10:43:44