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 table WHERE mod(id, 10) = 1

搏一搏

于 2012-10-16T09:30:04.087 回答
1
SELECT id
  FROM table
 WHERE id LIKE '%0'
于 2012-10-16T09:29:45.187 回答
1

如果您需要查找字段是否以数字结尾,您可以使用正则表达式,如下所示

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

希望能帮助到你...

于 2012-10-16T09:43:51.773 回答
0

您可以使用强制转换和 LIKE 来做到这一点,但是对于任何不重要的数据量,性能可能会很糟糕(我没有在您的特定情况下进行测试,但根据我的经验,转换为字符串以便您可以使用字符串操作确实会减慢查询速度)。

更好的方法是使用模数。

例如,要获取数字字段以 4 结尾的所有行:

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

同样,我没有对此进行基准测试,但它可能会比铸造表现更好。

当然,如果列类型已经是字符串,那么 LIKE 是可行的方法,因为在字符串上使用 MOD 也需要强制转换。

于 2012-10-16T09:32:49.890 回答
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
SELECT id FROM table WHERE id REGEXP '1[[:>:]]'
于 2016-09-20T08:42:17.170 回答