2

特定のフィールドが数字で終わる場合に行を選択できる mysql_query を実行したいと考えています。例えば:

<?php
$query = mysql_query("SELECT id FROM table WHERE [ID ENDS IN 0]");
$query = mysql_query("SELECT id FROM table WHERE [ID ENDS IN 1]");
$query = mysql_query("SELECT id FROM table WHERE [ID ENDS IN 2]");
$query = mysql_query("SELECT id FROM table WHERE [ID ENDS IN 3]");
//and so on...
?>

これを行う方法はありますか?どんな助けでも素晴らしいでしょう。ありがとうございました!

4

7 に答える 7

3
SELECT ...
  WHERE somefield LIKE '%1'
于 2012-10-16T09:29:18.760 に答える
2

SELECT ID FROM テーブル WHERE mod(id, 10) = 1

試してごらん

于 2012-10-16T09:30:04.087 に答える
1

次のように、フィールドが数字で終わっているかどうかを確認する必要がある場合は、正規表現を使用できます。

SELECT id FROM table WHERE id REGEXP '[0-9]$'

それが役に立てば幸い...

于 2012-10-16T09:43:51.773 に答える
1
SELECT id
  FROM table
 WHERE id LIKE '%0'
于 2012-10-16T09:29:45.187 に答える
0

LIKE とワイルドカード式を使用できます。次のようにする必要があります

SELECT id FROM table WHERE id REGEX '%0$'
SELECT id FROM table WHERE id REGEX '%1$'

等々。

于 2012-10-16T09:34:29.060 に答える
0

キャストとLIKEでそれを行うことができますが、パフォーマンスは、重要な量のデータに対してひどいものになる可能性があります(特定のケースではテストしていませんが、私の経験では、文字列にキャストして文字列を使用できるようにします操作は実際にクエリを遅くします)。

より良い方法は、モジュラスを使用することです。

たとえば、数値フィールドが 4 で終わるすべての行を取得するには、次のようにします。

SELECT *
FROM table
WHERE MOD(column_of_interest, 10) = 4

繰り返しますが、私はこれをベンチマークしていませんが、おそらくキャストよりも優れたパフォーマンスを発揮するでしょう.

もちろん、列の型がすでに文字列である場合は、文字列で MOD を使用するとキャストも必要になるため、LIKE が適しています。

于 2012-10-16T09:32:49.890 に答える
0
SELECT id FROM table WHERE id REGEXP '1[[:>:]]'
于 2016-09-20T08:42:17.170 に答える