2014-02-14 19 views
2

我想要一个MySQL查询来返回没有唯一输入字符串/短语的行。MySQL获取行,它不会只包含特定的字符串/字

例如:我有表列名状

Sno | sname 
--------------- 
1 | AAA 
2 | SSS 
3 | Group Post 
4 | Group Post, Test Run 
5 | Group Post, Group Post 
6 | Group Post, Group Post, My test Run 

在上表我想消除其中有“集团邮报”只有在他们的行。这意味着该帖子存在多少次,并且其中没有其他短语或单词,那么我们可以将其消除。

所以我想查询将返回

Sno | sname 
--------------- 
1 | AAA 
2 | SSS 
4 | Group Post, Test Run 
6 | Group Post, Group Post, My test Run 

在这些行有的已经邮政集团在其中。但随着我们在其中有其他短语。

在此先感谢。

+1

对不起,但你的问题很难破译成书面。你想要排第3行吗?还是比这更多?请提供一个“之前”的例子来说明你的“之前”的例子,我相信这将有助于澄清你想要做的事情。 – Kzqai

+0

为什么你不能尝试在PHP中通过获取所有的行值,并检查它存储哪些值是需要的 – krishna

+0

我会使用PHP,获取数组中的值,并爆炸sname - 通过结果数组,并选择选择我保留的还是丢掉的 – wribit

回答

5

您需要REPLACE功能来过滤数据。

试试这个:

select * from my_table 
where length(replace(replace(sname, 'Group Post', ''), ', ', '')) > 0 

参考
MySQL: REPLACE(str,from_str,to_str) Function

+0

嗨Ravinder,谢谢你的答案。您的查询解决了我的问题。 – Kiran

0

尝试寻找所有这些都是字符串ID的子查询,然后在不使用例如

SELECT * FORM {table_name} where id not in (select * from {table_name} where sname = "YOUR_STRING"); 
+0

这不会解决OP问题。 PLZ明确地阅读问题 – krishna

0

从table_name的 选择斯诺,SNAME 其中长度(更换(SNAME, '集团邮政', '' ))> 0;

0

QUERY

SELECT * 
FROM test 
WHERE sname NOT LIKE '%Group Post' 

SQL FIDDLE DEMO

希望这将帮助你......!

相关问题