1

假设我有一张这样的桌子......

id | value
----------
1  | 4
2  | a8
3  | 13
4  | a2
5  | 7

因此,值中的某些数字前面有一个“a”,而其他数字则没有。

现在假设我想提取任何高于 6 的数字——包括任何前面带有“a”的数字。

所以一个看起来像这样的查询(插入一些我知道在 SQL 中不起作用的 PHP)

SELECT * FROM table WHERE str_replace("a","",value)>6;

预期的结果应该是...

id | value
----------
2  | a8
3  | 13
5  | 7

请注意,我并不想真正摆脱 SQL 表中的“a”。桌子应该保持不变。不过,如果返回的结果中没有“a”,那也没关系。

4

1 回答 1

1

基本上你必须:

  1. 清理数据
  2. 转换为 int(+ 0用作快捷方式)
  3. 使用结果过滤

尝试这个:

SELECT id, value FROM table
WHERE REPLACE(value, "a", "") + 0 > 6

如果您还想在结果中包含“已清理”字段,则还必须将其添加REPLACE到您的 select 语句中:

SELECT id, REPLACE(value, "a", "") + 0 value FROM table
WHERE REPLACE(value, "a", "") + 0 > 6
于 2013-10-04T19:14:19.123 回答