SQL 查询以在我的金额字段中查找任何连续的整数
SQL query to find any consecutive integer in my amount field
所以我在 table 中的数据如下所示:
amount | ID
10918.6 | ABC
9999.99 | BCD
9999.89 | DEF
我需要找到所有连续的数字(9999.99、1111.11、2222.22 等,0000.00 除外)所以从上面的示例输出应该只给出 BCD。我只需要检查 1k 个位置。
如果我有 9999.99 和 99.99 它应该只会给我 9999.99。
此外,如果我有 989999.99,我也必须将其视为我接受的输出
我可以通过使用 where 子句来做到这一点——像“%9999.99”或“%1111.11”这样的列,但我需要找到更好的方法,可能是通过常规 exp 等。
使用取模,您可以去除 10k 位置以上的任何数字,然后检查这些值是否在可接受的列表中。
WHERE
(amount % 10000) IN (1111.11, 2222.22, 3333.33, 4444.44, 5555.55, 6666.66, 7777.77, 8888.88, 9999.99)
或者...
WHERE
(amount % 10000) / 1111.11 IN (1,2,3,4,5,6,7,8,9)
这些避免将数字转换为字符串,这通常既不必要也不谨慎。
所以我在 table 中的数据如下所示:
amount | ID
10918.6 | ABC
9999.99 | BCD
9999.89 | DEF
我需要找到所有连续的数字(9999.99、1111.11、2222.22 等,0000.00 除外)所以从上面的示例输出应该只给出 BCD。我只需要检查 1k 个位置。
如果我有 9999.99 和 99.99 它应该只会给我 9999.99。
此外,如果我有 989999.99,我也必须将其视为我接受的输出
我可以通过使用 where 子句来做到这一点——像“%9999.99”或“%1111.11”这样的列,但我需要找到更好的方法,可能是通过常规 exp 等。
使用取模,您可以去除 10k 位置以上的任何数字,然后检查这些值是否在可接受的列表中。
WHERE
(amount % 10000) IN (1111.11, 2222.22, 3333.33, 4444.44, 5555.55, 6666.66, 7777.77, 8888.88, 9999.99)
或者...
WHERE
(amount % 10000) / 1111.11 IN (1,2,3,4,5,6,7,8,9)
这些避免将数字转换为字符串,这通常既不必要也不谨慎。