2017-01-27 7 views
1

mysqlの文字列を比較したいが、私が行っていることは正しく動作していないようだ。mysqlの文字列を比較すると正しく動作しない

私は、ログイン/パスワードテーブルUSERSがあるのvarchar(128/255)と、一つのレコードを持っている

msqlrecord (下記参照)内部Iはログインがquakで、パスワードは「D08であるユーザーを取得したいです。.. 'ので、私はいくつかのクエリを作成しました: -

  • SELECT d.* FROM USERS d WHERE d.password = 'd08774a578812218da9f94480f914589e57ff1f358ccfed6009e1d9331d0b702';

    が動作しない -

    1. SELECT d.* FROM USERS d WHERE d.password IN ('d08774a578812218da9f94480f914589e57ff1f358ccfed6009e1d9331d0b702');動作しませ

    2. SELECT d.* FROM USERS d WHERE strcmp(d.password, 'd08774a578812218da9f94480f914589e57ff1f358ccfed6009e1d9331d0b702'); -

    3. SELECT d.* FROM USERS d WHERE d.login IN ('quak');機能しない - 作業

    4. SELECT d.* FROM USERS d WHERE d.login = 'quak'; - 作業

    5. SELECT d.* FROM USERS d WHERE strcmp(d.login, 'quak') = 0; - 仕事は(0を返された - 同じ)

      1. なぜ1,2を問い合わせますクエリ4,5はどこで動作していませんか?

      2. クエリ3が機能しない理由、クエリ6が機能している理由

    UTF8一般

  • +0

    はDを選択'試してみてください*ユーザーからはd.password LIKE '%のd08774a578812218da9f94480f914589e57ff1f358ccfed6009e1d9331d0b702%' ' –

    +0

    @TravisSmithはここで、d 0レコード) ' – Niewidzialny

    +1

    ' SELECT d。* FROM USERSからの実験d WHERE d.password LIKE '%d08774a578812218da9f94480f914589e57ff1f358ccfed6009e1d9331 d0b70%' 'まだ空の結果が返ってくるかどうかを確認してください –

    答えて

    0

    などと比較するログイン= ..とパスワード= ..

    テキストはたぶん、あなたがスペース/特殊な文字のいくつかの種類を持っているwher私の目標は、ユーザーを取得しています?

    試してみてください。( `MySQLは空の結果を返しました:

    SELECT d.* FROM USERS d WHERE trim(uppercase(d.password)) = trim(uppercase('d08774a578812218da9f94480f914589e57ff1f358ccfed6009e1d9331d0b702')); 
    
    +0

    これを 'SELECT d 'に変更しました。 (UPPER( 'd08774a578812218da9f94480f91458fe6e1d9331d0b702')) ' これはまだ動作しません。私はtextdiifで両方の文字列をチェックしました。com - それは彼らが同じであると言う – Niewidzialny

    0

    SELECT * FROM USERS d WHERE password like 'd08%'; 
    
    +0

    これは良いですが、もし私がより多くのユーザーを持っていると、この新しいユーザーのいくつかはパスワード 'd08123123123123'を持っていますか?両方のユーザーが返されます。そして私はそのようにしたくない。両方のパスワードはまったく同じでなければなりません – Niewidzialny

    関連する問題