SQL在值边界中将LIKE与通配符一起使用

时间:2019-01-08 14:29:58

标签: python sql sql-like

我尝试搜索很长时间,但所有答案并没有真正使我到处都有。

我正在尝试编写一个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。 非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

如果数字实际上是数字列,则可以进行直接比较。除此以外 我会使用类似以下的内容来获得您想要的。有点不同,但我认为它可以满足您的需求

case
    When LEN(number)<3 or Cast(Left(Number,3) as Int) < 10 Then 'Group 1'
    When Cast(Left(Number,3) as Int) < 28 Then 'Group 2'

您可能需要对一些极端情况进行周审,但是我认为这可以理解。

答案 1 :(得分:0)

您是否正在寻找类似的东西?

SELECT number,
       (CASE WHEN number >= '00' AND number < '01' THEN 'group 1'
             WHEN number >= '01' AND number <= '027' THEN 'group 2'
             ELSE '0'
        END) as new_group

第一组将是以“ 00”开头的数字。第二个将是数字,该数字以该范围内的字母顺序开头。 “按字母顺序”表示“ 01A”符合条件。