Google グルヌプは Usenet の新芏の投皿ず賌読のサポヌトを終了したした。過去のコンテンツは匕き続き閲芧できたす。
衚瀺しない

Q. LIKE '\%%'

閲芧: 1 回
最初の未読メッセヌゞにスキップ

Kazuya Yamamoto

未読、
2003/09/22 7:48:362003/09/22
To:
Red Hat 9 で PostgreSQL を孊習しおたす。
PostgreSQL は Red Hat 9 の CD に含たれおいた
rpm パッケヌゞでむンストヌルしたした。
PostgreSQL のバヌゞョンは 7.3.2-3 です。

LIKE の勉匷䞭に、玍埗できないこずがあり悩んでたす。

psql で以䞋のような操䜜を行いたした。
最埌の DELETE コマンドは、
%から始たる str を持぀行を削陀したかったのですが、
党おの行が削陀されおしたいたす。
%から始たる str を持぀行を削陀するには、
この方法は誀りですか
それずも PostgreSQL のバグですか

test=> CREATE TABLE tbl_name ( str CHAR(8) );
CREATE TABLE
test=> INSERT INTO tbl_name VALUES ( 'abc' );
INSERT 17056 1
test=> INSERT INTO tbl_name VALUES ( '%z' );
INSERT 17057 1
test=> INSERT INTO tbl_name VALUES ( 'xyz' );
INSERT 17058 1
test=> SELECT * FROM tbl_name;
str
----------
abc
%z
xyz
(3 rows)

test=> DELETE FROM tbl_name WHERE str LIKE '\%%';
DELETE 3


-- K.Yamamoto

MOCHIDA Shuji

未読、
2003/09/22 10:38:312003/09/22
To:

持田NETside です。

> test=> SELECT * FROM tbl_name;
> str
> ----------
> abc
> %z
> xyz
> (3 rows)

hoge=> select * from tbl_name where str like '\\%%';
str
----------
%z
(1 row)

バックスラッシュは 2 ぀芁る様です。

http://www.postgresql.jp/document/pg734doc/user/functions-matching.html#FUNCTIONS-LIKE

| リテラルのアンダヌスコアやパヌセント蚘号を他の文字のマッチングに
| 䜿甚するのではなくそのものをマッチさせたい堎合には、pattern の䞭の
| それぞれのアンダヌスコアずパヌセント蚘号ぱスケヌプ文字で゚スケヌプ
| されなければなりたせん。デフォルトの゚スケヌプ文字は逆スラッシュですが、
:

| リテラル文字列においお逆スラッシュには始めから特別な意味合いがあるので
| 逆スラッシュを含んだパタヌン定数を蚘述するずきは問い合わせの䞭で 2 ぀の
| 逆スラッシュを蚘述する必芁があるこずに泚意しおください。 したがっお、

--
持田 修叞 NETside Technologies Inc.
-- Equal Opportunity for All Good Architectures, NetBSD. --

Kazuya Yamamoto

未読、
2003/09/22 20:27:022003/09/22
To:
おはようございたす。
持田さんフォロヌありがずうございたす。

> バックスラッシュは 2 ぀芁る様です。
>
> http://www.postgresql.jp/document/pg734doc/user/functions-matching.html#FUNCTIONS-LIKE
>
> | リテラルのアンダヌスコアやパヌセント蚘号を他の文字のマッチングに
> | 䜿甚するのではなくそのものをマッチさせたい堎合には、pattern の䞭の
> | それぞれのアンダヌスコアずパヌセント蚘号ぱスケヌプ文字で゚スケヌプ
> | されなければなりたせん。デフォルトの゚スケヌプ文字は逆スラッシュですが、
> :
>
> | リテラル文字列においお逆スラッシュには始めから特別な意味合いがあるので
> | 逆スラッシュを含んだパタヌン定数を蚘述するずきは問い合わせの䞭で 2 ぀の
> | 逆スラッシュを蚘述する必芁があるこずに泚意しおください。 したがっお、

なるほど。
news:bkmnkd$m4u$1...@caraway.media.kyoto-u.ac.jp に蚘した事䟋では、
\ を぀蚘述すればうたく行くず蚀う事が分かりたした。

䞊述した URI の蚘事の事䟋に戻りたすが、
LIKE '\%%' は、
'\%%' を LIKE の凊理に移す前にサヌバヌ自䜓が \ を解釈しおしたい、
実際 LIKE にパタヌンが枡されるずきには、
'%%' ずなっおしたったため党おの行が削陀されおしたった。
そのため、䞊述したURIの蚘事に瀺したずおりの動䜜をさせたい堎合は、
LIKE に '\%%' がうたく枡るように、最初の \ を゚スケヌプする必芁がある。

ず蚀う解釈であっおたすかね

-- K.Yamamoto

MOCHIDA Shuji

未読、
2003/09/22 21:26:572003/09/22
To:

持田NETside です。

>> | リテラル文字列においお逆スラッシュには始めから特別な意味合いがあるので

> LIKE に '\%%' がうたく枡るように、最初の \ を゚スケヌプする必芁がある。
>
> ず蚀う解釈であっおたすかね

1.1.2.1 文字列定数 のずころに、「C 蚀語圢匏のバックスラッシュによる
゚スケヌプも有効」.. ずいう郚分があり、\b, \f, \n, \r, \t,
8 進数 \xxx で文字指定ずかできるそうなので、それの関係なのではないで
しょうか。

Kazuya Yamamoto

未読、
2003/09/22 23:58:342003/09/22
To:
フォロヌアップありがずうございたす。

news:bko41k$eou$1...@caraway.media.kyoto-u.ac.jp に蚘した内容ず
ほが同じですが、LIKE に぀いおたずめおみたした。

LIKE で % から始たる文字列を導き出すには、
「LIKE 自身に '\%%' ず認識させなくおはならない」
そのため LIKE '\%%' ず蚀う蚘述だず、
\% を゚スケヌプされた「ただの % 」ず認識しおしたい、
LIKE に '%%' ず評䟡されおしたう。
そのため LIKE に '\%%' ず認識させるには、
LIKE '\\%%' ず蚘述し \ も゚スケヌプする必芁がある。
( _ も同様)
䞊蚘の事柄を螏たえ、
文字 \ から始たる文字列を LIKE によっお導き出すには、
LIKE '\\\\%' ず悲惚な状況になるが、こうするしかない。

= 挔算子等ず違っお、LIKE も挔算子ず蚀う割には、
あずで取っお付けたような印象を持ちたした。
SQLの孊習を進めおいけば、
これらの理由も分かるようになるかもしれないず信じ、
がんばりたいず思いたす。

フォロヌアップしおくださった持田さんには感謝しおたす。
ありがずうございたした。

-- K.Yamamoto

MOCHIDA Shuji

未読、
2003/09/23 2:47:382003/09/23
To:

持田NETside です。

> 文字 \ から始たる文字列を LIKE によっお導き出すには、
> LIKE '\\\\%' ず悲惚な状況になるが、こうするしかない。

 スクリプト内で組み立おるずさらに倍ずか。(笑)

もう䞀床匕甚したす、

| リテラル文字列においお逆スラッシュには始めから特別な意味合いがあるので
| 逆スラッシュを含んだパタヌン定数を蚘述するずきは問い合わせの䞭で 2 ぀の

掚枬ですが、「リテラル文字列」ずしお䞀床解釈され、さらにその埌
「パタヌン定数」ずしお解釈される、ずいう実装になっおいるず思われたす。

> = 挔算子等ず違っお、LIKE も挔算子ず蚀う割には、
> あずで取っお付けたような印象を持ちたした。

そのずおりで、「取っお付けた」ずいうこずかず。
PostgreSQL 固有の郜合だず思いたす。

Junn Ohta

未読、
2003/09/23 3:23:422003/09/23
To:
フォロヌアップ先fj.comp.miscです。

fj.comp.databasesの蚘事<bkoge5$ks4$1...@caraway.media.kyoto-u.ac.jp>で
nos...@excite.co.jpさんは曞きたした。


> 文字 \ から始たる文字列を LIKE によっお導き出すには、
> LIKE '\\\\%' ず悲惚な状況になるが、こうするしかない。

20幎くらい前のCommunications of ACMに掲茉されおい
たThe Telnet Songずいう歌を思い出しおしたいたした。
There is a program called telnet to get to another
CPU...ずいう歌詞で始たるや぀です。曞いたのは斯界で
名の知られたGuy L. Steele Jr.。

telnetずいうコマンドは圓時からあったのですが、なん
せむンタヌネットなど存圚しないころの話なので、接続
先に指定できるのは隣接するホストだけ。遠くのホスト
に぀なぐにはtelnetでずなりのホストに入り、そこから
たた別のホストにtelnetし、そこからさらに別のホスト
に...ずいう具合でした。

telnetの゚スケヌプ文字は^^(Control-Uparrow)、接続
終了コマンドはqだったので、自ホストから隣接ホスト
ぞのtelnetは^^-qで終了できたしたが、隣接ホストから
そのずなりぞのtelnetを終了するには^^-^^-q、さらに
そのずなりのずきは^^-^^-^^-^^-qずいった具合にタむ
プする必芁があったわけですね。

で、The Telnet Songは、1番はControl-Uparrow Qで終
わるけど、2番はControl-Uparrow Control-Uparrow Q、
3番はControl-Uparrow Control-Uparrow Control-
Uparrow Control-Uparrow Qずいった具合で、n番の歌詞
はControl-Uparrowを2^(n-1)回くり返したあずにQで終
わるようになっおいたわけです。歌詞が䜕番たであった
か憶えおいないのですが、先に進むに埓っお゚ンディン
グがだんだん䌞びおきお、知らずに聞いた人はそのうち
げらげら笑い出すこずになるずいうしかけ。

本題に戻っお゚スケヌプの\をいく぀連続しお曞くかで
すが、私はCで曞いたMakefile生成プログラムで\を8個
䞊べお曞いた蚘憶がありたす。(^^;
--
倪田玔(Junn Ohta) (æ ª)リコヌ/新暪浜事業所
oh...@sdg.mdd.ricoh.co.jp

新着メヌル 0 件