[groonga-dev,03777] Re: エスケープ文字に関して

Back to archive index

takah****@yahoo***** takah****@yahoo*****
2015年 12月 17日 (木) 10:07:19 JST


須藤 様

お世話になっております。佐瀬で御座います。

度々の質問で大変申し訳御座いません。
またご連絡誠に有難う御座います。

> すみません、具体的なINSERTとSELECTとその結果を見せてもらえま
> せんか?
=======================================================
delimiter $$

CREATE TABLE `mail` (
  `No` double NOT NULL AUTO_INCREMENT,
  `Subject` varchar(1000) DEFAULT NULL,
  `Body` mediumtext,
  `ToAdd` varchar(1000) DEFAULT NULL,
  `FromAdd` varchar(1000) DEFAULT NULL,
  `Cc` varchar(1000) DEFAULT NULL,
  `Bcc` varchar(1000) DEFAULT NULL,
  `Date` timestamp NULL DEFAULT NULL,
  `AttachedFile` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`No`),
  FULLTEXT KEY `ToAdd` (`ToAdd`),
  FULLTEXT KEY `Cc` (`Cc`),
  FULLTEXT KEY `Bcc` (`Bcc`),
  FULLTEXT KEY `FromAdd` (`FromAdd`),
  FULLTEXT KEY `Body` (`Body`) COMMENT 'parser "TokenMecab"',
  FULLTEXT KEY `Subject` (`Subject`) COMMENT 'parser "TokenMecab"'
) ENGINE=Mroonga DEFAULT CHARSET=utf8$$


=======================================================

INSERT INTO `mail14`.`mail`
(`No`,
`Subject`)
VALUES
(1,'\\'),(2,'\(');
delimiter $$


=======================================================

use mail14;

select mroonga_command('select --table mail --output_columns No,Subject,ToAdd,FromAdd,Cc,Bcc,Date,AttachedFile --query \' Subject:@\\\\\\\\ \' --limit 1 --cache no');

'[[[1],[["No","Float"],["Subject","ShortText"],["ToAdd","ShortText"],["FromAdd","ShortText"],["Cc","ShortText"],["Bcc","ShortText"],["Date","Time"],["AttachedFile","Int8"]],[1.0,"\\","","","","",0.0,0]]]'

\ひとつしか入力していないのに「"\\"」重複して結果が取得出来ます。

=======================================================

use mail14;
select mroonga_command('select --table mail --output_columns No,Subject,ToAdd,FromAdd,Cc,Bcc,Date,AttachedFile --query \' Subject:@"\" \' --limit 1 --cache no');

'[[[0],[["No","Float"],["Subject","ShortText"],["ToAdd","ShortText"],["FromAdd","ShortText"],["Cc","ShortText"],["Bcc","ShortText"],["Date","Time"],["AttachedFile","Int8"]]]]'

"\"は何も取得出来ない。

use mail14;
select mroonga_command('select --table mail --output_columns No,Subject,ToAdd,FromAdd,Cc,Bcc,Date,AttachedFile --query \' Subject:@"(" \' --limit 1 --cache no');

'[[[1],[["No","Float"],["Subject","ShortText"],["ToAdd","ShortText"],["FromAdd","ShortText"],["Cc","ShortText"],["Bcc","ShortText"],["Date","Time"],["AttachedFile","Int8"]],[2.0,"(","","","","",0.0,0]]]'


"("は取得出来る。

このあたりの仕様の差がわからずエスケープを使用する文字に関してエスケープの場合とダブルコーテーションの
パターンでどういった形が仕様なのかご教示頂ければ幸いで御座います。


=======================================================


以上、お手数をお掛け致しますが
何卒、宜しくお願い致します。

---- Original Message -----

From: Kouhei Sutou <kou****@clear*****>
>To: groon****@lists***** 
>Date: 2015/12/17, Thu 00:06
>Subject: [groonga-dev,03776] Re: エスケープ文字に関して
> 
>須藤です。
>
>In <71192****@web30*****>
>  "[groonga-dev,03765] Re: エスケープ文字に関して" on Mon, 14 Dec 2015 13:31:38 +0900 (JST),
>  takah****@yahoo***** wrote:
>
>> mroonga_commandでエスケープを行う際に\\\\使用しますが、
>> groongaで一つ使用するのは理解できるのですが、残りの三つは、
>> どのタイミングで使用されるのでしょうか。
>> mysql等かとは思っておりますが、理解があやふやの為、
>
>MySQLです。
>
>MySQLが\\\\を\\にして、
>Groongaが\\を\にします。
>
>> また、カラムに\のみ入れまして、
>> mroonga_commandでselectしたのですが、
>> \\と重複してselectされたのですが、これは仕様で御座いますか。
>> 
>> 取得後に文字列チェックをして\\だったら\にする様な、
>> 置換を入れる必要があるのでしょうか。
>
>すみません、具体的なINSERTとSELECTとその結果を見せてもらえま
>せんか?
>
>
>-- 
>須藤 功平 <kou****@clear*****>
>株式会社クリアコード <http://www.clear-code.com/>
>
>Groongaベースの全文検索システムを総合サポート:
>  http://groonga.org/ja/support/
>パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
>  http://www.clear-code.com/recruitment/
>リーダブルコードワークショップ:
>  http://www.clear-code.com/services/code-reader/readable-code-workshop.html
>
>_______________________________________________
>groonga-dev mailing list
>groon****@lists*****
>http://lists.osdn.me/mailman/listinfo/groonga-dev
>
>
>
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
Download 



groonga-dev メーリングリストの案内
Back to archive index