2016-11-24 1 views
-1

列の特定のテキストを検索するクエリを作成し、このテキストを含むすべての行を取得したいとします。私は以下のSQLクエリで達成しようとしていることを行う方法はありますか?私はテキストのどこに名前がついていて別の名前がついているかを見つけたいと思っています。これは本当に私が検索したいものですが、あらかじめこの名前が何か分かっていませんが、テキストの中の名前と一緒に。テキストの一部が区別されない場合の検索クエリ

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

それは、テキスト列が以下のようにボブとアリスが含まれている行を返します:私はこのように見てXMLを持っていた場合、そのような

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

。どんなヒントも大変感謝しています。

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

それはxmlの列にあるすべてのDISTINCTの名前を返します。

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

は、あなただけの文字列の名前の一部、または全部価値をしたいですか? – jarlh

+0

私はちょうど値を検索することができるようにしたいと思います。 – Left4Cookies

+0

どの値ですか?期待される結果を書式付きテキストとして指定します。 – jarlh

答えて

0
Use Group By 

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

しかし、彼はいくつかの一般的なSQL querryを導入していますが、彼のSQL querryはまだ有効ではありません。彼は格納された文字列から値を取得する何らかの正規表現を探しています...しかし、それはSQLとDBSが作られたものではありません –

+0

ええ、何が@Take_Care_が言及しました。また、SQLで行うことは実際にはできないと考えていましたが、私が見落としてしまったことがあったと思っていました。 – Left4Cookies

+2

集計関数を使用しないGROUP BYの理由(SELECT DISTINCTを使用している場合は不要です) – jarlh

0

私が思うに、このクエリは、ご希望の出力をあなたを与えることができます。

UPDATE:

答えは非常に簡単です - CONCATへのSQL Serverの同等の機能は、() '+'(引用符なしプラス演算子)です。

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

@ Left4Cookiesは、この解決策を支援しています... – Vikrant

+0

「+」はこの操作の有効な入力ではありませんが、入力していただきありがとうございます。 – Left4Cookies

0

これが私の作品:

SELECT DISTINCT name FROM some_table WHERE xml like CONCAT('%<name = "name">%', name,'</>%') 
関連する問題