- PR -

SQL(LIKEとESCAPE)についての質問です

1
投稿者投稿内容
march_9770
会議室デビュー日: 2008/05/22
投稿数: 11
投稿日時: 2008-05-22 13:37
テーブルTableAに
Comment
--------
aaa@[aaa
というデータがあり、SELECTで取り出すとき
SELECT * FROM TableA WHRE Comment like '%@%'
では取り出せましたが、
SELECT * FROM TableA WHRE Comment like '%aaa@[aaa%' escape '@'
では取り出せませんでした

aaa@[aaaを指定して取り出すにはどのようにすればよいでしょうか?


[ メッセージ編集済み 編集者: 未記入 編集日時 2008-05-22 13:39 ]
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-05-22 13:53
回答ではありませんが、

引用:

未記入さんの書き込み (2008-05-22 13:37) より:

SELECT * FROM TableA WHRE Comment like '%aaa@[aaa%' escape '@'



なぜescape構文が必要だと思ったのか、そのあたり教えてくださるとありがたいです。
march_9770
会議室デビュー日: 2008/05/22
投稿数: 11
投稿日時: 2008-05-22 14:07
返答ありがとうございます

'%aaa@[aaa%'内の[がメタ文字のためエスケープする必要があると考えました

データに@がないものとしてescape処理していたのですが、
データに@(エスケープ文字)が含まれることになり、さらに、メタ文字もある場合の検索の仕方が分かりませんでした。
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-05-22 14:27
引用:

未記入さんの書き込み (2008-05-22 14:07) より:

'%aaa@[aaa%'内の[がメタ文字のためエスケープする必要があると考えました

データに@がないものとしてescape処理していたのですが、
データに@(エスケープ文字)が含まれることになり、さらに、メタ文字もある場合の検索の仕方が分かりませんでした。


なるほど。それであれば、

SELECT * FROM TableA WHERE Comment LIKE '%aaa@@@[aaa%' ESCAPE '@'

で取得できるでしょう。
# @@ はエスケープされて @ 自身に、@[ はエスケープされて [ になるので。
march_9770
会議室デビュー日: 2008/05/22
投稿数: 11
投稿日時: 2008-05-22 16:54
ありがとうございます!

引用:

rainさんの書き込み (2008-05-22 14:27) より:

SELECT * FROM TableA WHERE Comment LIKE '%aaa@@@[aaa%' ESCAPE '@'

で取得できるでしょう。



で、取り出せました!
本当にありがとうございました!
rain
ぬし
会議室デビュー日: 2006/10/19
投稿数: 549
投稿日時: 2008-05-22 17:12
…ん、まてよ?

わざわざ '@' をエスケープ文字にしないで、通常エスケープに使う文字を使えばいいだけの話?

ということを後になってから気づくのであったorz
ほったて
ベテラン
会議室デビュー日: 2007/11/10
投稿数: 68
投稿日時: 2008-05-22 17:37
引用:

未記入さんの書き込み (2008-05-22 13:37) より:
テーブルTableAに
Comment
--------
aaa@[aaa
というデータがあり、SELECTで取り出すとき
SELECT * FROM TableA WHRE Comment like '%@%'
では取り出せましたが、
SELECT * FROM TableA WHRE Comment like '%aaa@[aaa%' escape '@'
では取り出せませんでした

aaa@[aaaを指定して取り出すにはどのようにすればよいでしょうか?


[ メッセージ編集済み 編集者: 未記入 編集日時 2008-05-22 13:39 ]



escape自体いらない...。
1

スキルアップ/キャリアアップ(JOB@IT)