• ベストアンサー

SELECT文の条件

Linux + mysql4.1.22を使っています。 先ほど気が付いたのですが、テーブルsampleにフィールドid(int)がある時、 SELECT * FROM sample WHERE id='1a' とすると、id=1のデータが取得できてしまいました。 どうしてなんでしょう。ご存知の方、ご教示下さい。

質問者が選んだベストアンサー

  • ベストアンサー
noname#259146
noname#259146
回答No.1

これはmysql特有の動作です。たのSQLサーバではエラーになります。 今回のidはint(数値)です。 動作としては「頭から読んでいって数値と解釈できなくなったら後ろは無視する」の結果です 直接的な回答のHPではありませんが参考URLを見てください。

参考URL:
http://www.sonorilo.net/2010/03/02/2718
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • MySQLのselect文で、最大ID値のデータを呼び出す

    MySQLのテーブルのフィールド名として「ID」を登録しています。(型はint) そこで、select文で最大ID値のデータを呼び出すにはどうすればいいのか教えて頂けないでしょうか? select * from tableA ?????;

    • ベストアンサー
    • MySQL
  • select文について

    現在、"user"というテーブルに"id"と"date(datetime)"という項目があり、その"date"にあるデータの中から月を指定して抽出したくて以下ようなSQL文を書いたのですがうまくいきません。 SELECT `id` FROM `user` WHERE convert((SELECT extract(month from `date`) FROM `user`), INTEGER) = 9 mysql5.0です。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQLで取得したフィールドをSQL文として利用

    お世話になっております。 MYSQLで sql_id (int PK) sql_data (text) のようなテーブル(sql_db)を持ち select sql_id from where (sql_data をsqlとして実行した結果 ) > 200 のように、フィールドから取得した値をSQLとして実行したりする方法はございますでしょうか。 ご教授よろしくお願いいたします。

  • Select文1 マイナス Select文2

    テーブルA ユーザーID,地名,県名,評価 テーブルB ユーザーID,県名,制覇flag のような二つのテーブルがあると仮定してSelect文1、 "select 県名,count(地名) from テーブルA where ユーザーID=1 group by 県名 order by count(地名);" の結果が 県名,count(地名) 北海道,30 東京,22 京都,15 名古屋,10 鳥取,9 沖縄,8 であるとし、 Select文2、 "select 県名 from テーブルB where usrid=1 and 制覇flag='true'" の結果が、 県名 北海道 東京 とします。 このSelect文1の結果から、Select文2の結果を引いて 県名,count(地名) 京都,15 名古屋,10 鳥取,9 沖縄,8 の結果を得るにはどうすればよいでしょうか? Mysqlのバージョンは5.0.21です。

    • ベストアンサー
    • MySQL
  • MySQLのselect文の設定に関して

    MySQLのselect文で、IDを例えば10001~10010までを検索する場合はどうすればいいのか教えて頂けないでしょうか? select * from table_A where ???

    • ベストアンサー
    • MySQL
  • Loop文による検索条件の変更

    Loop文で検索条件を変えるSQL(plpgsql)を作成しようとしております。 具体的にはあるテーブルから、 select a,b from sample…(1) でデータを取得して、このa,bを用いて、 select * from sample2 where sarch = a and sarch2 = b…(2) 上記SQLを(1)の件数文LOOPさせる。 わからないことは、 ・(1)で取得した、aとbを(2)にどのように入れていくか。 ・(1)の件数をどのように取得してLOOPさせればよいか 以上2点です。 どなたかご教授いただけたらと思います。 参考URLも是非教えていただけたらと思います。 よろしくお願いいたします。

  • SELECT文の二段重ね

    次のSQL文を実行します。 create table1 (id, english) insert table1 (1,"foo") insert table1 (2,"bar") create table2 (id, japanese) insert table2 (1, "ふー") insert table2 (2, "ばー") SQL文法としては誤ってますが、成功したとします。 いま、select id from table1 where english = 'foo'; で1が得られます。 いま、select japanese from table2 where id = 1; で"ふー"が得られます。 これを一つのSQLite3のselect文で実現できないでしょうか。 select japanese from table2 where id = (select id from table1 where english = 'foo'); で良いですか? カテゴリ選択にSQLiteが無いのは、人気が無いからですかね。

  • php5+mysqlのSELECT文でwhere句を指定すると正しく動

    php5+mysqlのSELECT文でwhere句を指定すると正しく動きません。 レコード数を取得します。 ここで、field10(category)=text型の値に基づきレコード数を取得したいのですが、 $sql="select * from A where B='C'"; とするとレコード出力(index.php)で0を出力。 where句を指定せずに $sql="select * from A"; とするとレコード出力(index.php)で97を出力。 文字コード関係のQ&Aサイトを見ましたが、phpファイルの冒頭部分に $con = mysql_connect($DBSERVER, $DBUSER, $DBPASS); mysql_query("SET NAMES 'sjis'"); $selectdb = mysql_select_db($DBNAME, $con); を指定しています。 テーブルAに含まれるデータは、csv(,区切り)で、load data infile・・・しました。 ※Records:97 Deleted:0 Skipped:0 Warnings:0 他に考えられる原因・対処方法はありますでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • select文でGROUP BYの正しい使い方

    下記のselect文は問題ないでしょうか?テーブルには5つのフィールド(id,name,age,gender,office)が存在します。 select * from テーブル名 where age >= '40' GROUP BY gender 実際に試したところ、うまく動いているのですが、GROUP BY句で指定されたフィールド名はSELECT句のフィールド指定をすべて含んでいなくてはならないと書かれているのを見つけました。 上記のselect文は正しいのでしょうか。

    • ベストアンサー
    • PHP
  • SELECT文でMySQLから取得したデータの使用

    PHP初心者なのでお手間を取らせてしまい申し訳ありませんがご教授お願いします。 select~ でMysqlより取得したデータをそのままMysqlで検索掛けたいので 下記のようにしてみたのですが機能しません "select * from address where addr_id like $row[addr]"; 多分色々と間違えてるのかも知れませんがよろしくお願いいたします。