mysql:2157
From: "Ningfeng Yang" <"Ningfeng Yang" <yang@xxxxxxxxxx>>
Date: Fri, 2 Jun 2000 22:08:06 +0900
Subject: [mysql 02157] Re: フィールドに入っているデータに後方一致した場合エラーを返す方法
> 質問1:limit 1ですが、大量にデータを抽出する場合で > 検索するデーター数が決まっているのならば > これを付ければ、メモリの解放やプログラムの実行速度が速くなると理解 していいでしょうか? 無駄な検索が強制禁止されるから、もちろん実行スピードが速くなると思います。 > > 質問2: > INSTRで解決したと思ったのですが(^^; > まだ問題があるので相談させてください。 > > $separate = '@'; > $mail = explode($separate, $email); > $result = mysql_query ("SELECT maillist FROM kickemail WHERE INSTR('$mail[1]',maillist) limit 1"); > $num = mysql_num_rows($result); > if ($num > 0){ > echo "このメールアドレスは使えません <BR>"; > > exit; > } > > > $mail[1]に、例えば、abc.comが入っているとして、maillistにもabc.comが入って います。 > キックしたいのは、abc.comとそのサブドメイン全てなのですが > INSTRでやると、abcabc.comなどの別のドメインもキックすることになってしまう ことに気づきました。。 > > > INSTR('$mail[1]',maillist)の'$mail[1]'の部分になにか正規表現ができるといい なと思ってるのですが > SQLだとそういうことできるでしょうか? 実際に使ってみると、いろいろな問題が出てくるんですね。私が考えられる方法とし て、$mail[1]とmaillistの前に、一文字を追加して、たとえば、"@"を追加したら、 "@abc.com"と "@bacabc.com"となり、そうしてからINSTRを使う。 愚かな解決方法かもしれかせんが、実際にちゃんと動いてくれました。 正規表現あまり詳しくないが、正規表現使えば、もっと簡単な書き方ができるかもし れません。 楊
2145 2000-06-01 20:51 [<moeru@xxxxxxxxxx> ] フィールドに入っているデータに後方一致した場合エラーを返す方法 2146 2000-06-01 21:32 ┗["Ningfeng Yang" <yan] 2147 2000-06-01 22:07 ┗[<moeru@xxxxxxxxxx> ] 2148 2000-06-01 22:40 ┗["Ningfeng Yang" <yan] 2149 2000-06-01 23:36 ┣[<moeru@xxxxxxxxxx> ] 2152 2000-06-02 00:04 ┃┗["Ningfeng Yang" <yan] 2155 2000-06-02 18:55 ┃ ┗[<moeru@xxxxxxxxxx> ] -> 2157 2000-06-02 22:08 ┃ ┣["Ningfeng Yang" <yan] 2159 2000-06-02 23:41 ┃ ┗[とみたまさひろ <tomm] 2160 2000-06-03 00:47 ┃ ┣["Ningfeng Yang" <yan] 2161 2000-06-03 00:51 ┃ ┃┗["Ningfeng Yang" <yan] 2162 2000-06-03 00:54 ┃ ┗[<moeru@xxxxxxxxxx> ] 2150 2000-06-01 23:48 ┗[とみたまさひろ <tomm] 2151 2000-06-02 00:02 ┗["Ningfeng Yang" <yan]