查询是否部分文本不相同

时间:2016-11-24 11:12:54

标签: mysql sql

我想查询列中的某些特定文本,并获取包含此文本的所有行。有没有办法做我想在下面的SQL查询中实现的目标?我想在文本中找到所有的地方,上面写着名字后面跟着一个不同的名字,这就是我想要搜索的内容,但我事先并不知道这个名字是什么,但我知道它与文本中的名称一起。

SELECT DISTINCT name FROM some_table WHERE xml LIKE '%name="name">[value to search for]%'

如果我的XML看起来像这样:

<name = "name">Bob</>
<name = "name">Alice</>
<name = "name">Bob</>

它将返回text列包含Bob和Alice的行,如下所示。任何提示都非常赞赏。

<name = "name">Bob</>
<name = "name">Alice</>

3 个答案:

答案 0 :(得分:0)

Use Group By   

 SELECT DISTINCT name FROM some_table WHERE xml LIKE '%name="name">[value to search for]%' GROUP BY name

答案 1 :(得分:0)

我认为,此查询可以为您提供所需的输出:

SELECT DISTINCT name FROM some_table WHERE xml LIKE CONCAT('%name="name">' + name + '</>%')

它将返回xml列中的所有DISTINCT名称。

更新:

  

答案很简单 - SQL Server到CONCAT()的等效函数是'+'(加上没有引号的运算符)。

SELECT DISTINCT name FROM some_table WHERE xml LIKE '%name="name">', name ,'</>%'

答案 2 :(得分:0)

这对我有用:

SELECT DISTINCT name FROM some_table WHERE xml like CONCAT('%<name = "name">%', name,'</>%')