sql >> データベース >  >> RDS >> Mysql

Sqlwhere句が機能しない

    更新:OPのデータセットには非表示の改行文字(\ n)が含まれていました。 @EternalPoster(および私)は、Trimがすべての空白を削除すると想定していました 、ただしMySQLTrimドキュメント 先頭と末尾のスペースのみを指定します 。

    これが私がしたことです:

    -- for http://stackoverflow.com/questions/27203169/sql-query-not-work-for-google-com
    -- and http://stackoverflow.com/questions/27202157/sql-where-clause-not-working
    
    SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
    
    -- --------------------------------------------------------
    
    DROP TABLE IF EXISTS `sites`;
    
    --
    --  structure for table `sites`
    --
    CREATE TABLE IF NOT EXISTS `sites` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `site` varchar(32) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;
    
    --
    -- data for table `sites`
    --
    INSERT INTO `sites` (`id`, `site`) VALUES
    (1, 'xyz.com'),
    (2, 'google.com'),
    (3, 'example.com');
    
    --
    -- select google
    --
    SELECT * 
    FROM sites 
    WHERE site = 'google.com'
    ;
    
    --
    -- select google
    --
    SELECT * 
    FROM sites 
    WHERE site = 'google.com'
    ;
    

    これが私が得たものです:

    したがって、私の場合、スクリプトは期待どおりに機能していることがわかります。

    あなたのケースの違いは何ですか?私のインストールはかなりデフォルトの設定です。Like '%google.com%' データセットで動作することは、いくつかのことを示唆しています。人々はすでにTRIMを提案しています 、Like式は非表示の文字(スペース、タブ、バックスペース、ヌル)と一致するためです。 MySQLには、別の演算子REGEXP があります。 正規表現の場合、.ではないようです。 文字はワイルドカードとして使用されていますが、一見の価値があるかもしれません。

    空のデータベースを作成し、上記のスクリプトを実行してみてください。私と同じ結果が得られますか?



    1. djangoテンプレートで改行を含むデータベースからテキストを出力するにはどうすればよいですか?

    2. MariaDBの日付から月の名前を取得する3つの方法

    3. MySQLのテーブルをOracleのテーブルと結合する方法

    4. Pythonでの時間指定メールリマインダー