[前][次][番号順一覧][スレッド一覧]

mysql:15637

From: HIRATSUKA Sadao <HIRATSUKA Sadao <hiratsuka.sadao@xxxxxxxxxx>>
Date: Tue, 04 Oct 2011 21:01:20 +0900
Subject: [mysql 15637] Re: collationについて質問

こんばんは、平塚です。

On Tue, 4 Oct 2011 17:43:06 +0900
亀田義裕 <kameda.sbng@xxxxxxxxxx> wrote:

> collationについて、想定と違う動作に遭遇しました。どなたか動作の理由を
> ご存知であれば、教えていただけないでしょうか?

> * like検索ではなく、 = を用いて検索すると、マッチする


マニュアルの11章に記載されていました。

11.5.1. String Comparison Functions
http://dev.mysql.com/doc/refman/5.1/en/string-comparison-functions.html

| Per the SQL standard, LIKE performs matching on a per-character basis,
| thus it can produce results different from the = comparison operator: 

「SQL標準に則り、LIKEは1文字ごとに比較を行うので
  =比較演算子とは異なる結果を生成することがあります。」

ドイツ語の例がありますが、半角カタカナの濁点の扱いも
これと同じ状況ではないかと思います。


SQL92によれば、
http://www.contrib.andrew.cmu.edu/~shadow/sql/sql1992.txt (ドラフト版)

「M LIKE Pと書いたときに
  Pのi文字目に対応するものが、必ずMに存在すること」
という流れで照合を行うようです。

| 5) Case:
| 
|    a) If M and P are character strings whose lengths are variable
|      and if the lengths of both M and P are 0, then
| 
|         M LIKE P
| 
|      is true.
| 
|    b) The <predicate>
| 
|         M LIKE P
| 
|      is true if there exists a partitioning of M into substrings
|      such that:
| 
|      i) A substring of M is a sequence of 0 or more contiguous
|         <character representation>s of M and each <character repre-
|         sentation> of M is part of exactly one substring.
| 
|     ii) If the i-th substring specifier of P is an arbitrary char-
|         acter specifier, the i-th substring of M is any single
|         <character representation>.

※ arbitrary character specifier: _ のこと

|    iii) If the i-th substring specifier of P is an arbitrary string
|         specifier, then the i-th substring of M is any sequence of
|         0 or more <character representation>s.

※ arbitrary string specifier: % のこと

|     iv) If the i-th substring specifier of P is neither an arbi-
|         trary character specifier nor an arbitrary string speci-
|         fier, then the i-th substring of M is equal to that sub-
|         string specifier according to the collating sequence of
|         the <like predicate>, without the appending of <space>
|         characters to M, and has the same length as that substring
|         specifier.
| 
|      v) The number of substrings of M is equal to the number of
|         substring specifiers of P.
| 
|    c) Otherwise,
| 
|         M LIKE P
| 
|      is false.


よろしくお願いします。

-- 
平塚貞夫 hiratsuka.sadao@xxxxxxxxxx



[前][次][番号順一覧][スレッド一覧]

     15636 2011-10-04 17:43 [亀田義裕 <kameda.sbn] collationについて質問                   
->   15637 2011-10-04 21:01 ┗[HIRATSUKA Sadao <hir]                                       
     15638 2011-10-06 14:51  ┗[亀田義裕 <kameda.sbn]