我想查询列中的某些特定文本,并获取包含此文本的所有行。有没有办法做我想在下面的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</>
答案 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,'</>%')