【发布时间】:2019-01-08 14:29:57
【问题描述】:
我尝试搜索了很长时间,但所有答案并没有真正让我到任何地方。
我正在尝试编写一个 SQL 查询,我需要将某些值映射到具有通配符的新组,在某些边界之间这看起来像这样:
SELECT number,
CASE
WHEN number >= LIKE '0' AND number <= LIKE '009%' THEN 'group 1'
WHEN number >= LIKE '010%' AND number <= LIKE '027%' THEN 'group 2'
ELSE '0'
END AS NEW_GROUPS
这是必要的,因为数字可能类似于 00923 和 00811,它们需要属于第一类。因为 010.123、010123 和 0270 需要在第二个。
如果这样的事情真的不可能,那么在 Python 中使用带有字典的 map 方法也是一种选择(类似于:
df['number'].map({..})
但我不确定如何在此处使用 lambda/regex/wildcard。 非常感谢您的帮助!
【问题讨论】:
-
您使用的是哪个 SQL 数据库?即使在“相同”RDBMS 的版本之间,字符串格式也有很大不同。如果您真的试图找到通用解决方案 - 至少编写您想要的标准(SQL-89/ SQL-92/../SQL-2016)
-
而不是进行这种 SQL 查询;使用简单的查询来检索信息并使用 pandas 来执行数据操作。当您拥有大量数据时,这将是一个理想的解决方案。在这种情况下,复杂的 sql 查询会花费更长的时间。 stackoverflow.com/questions/19913659/…