我知道使用Postgres CASE表达式,您可以将其简化为:
SELECT a,
CASE a WHEN 1 THEN 'one'
WHEN 2 THEN 'two'
ELSE 'other'
END
FROM test;
…所以你不必写etc…
CASE
WHEN a = 1 THEN ''
WHEN a = 2 THEN ''
.
..
...
WHEN a = 99 or a = 100 THEN ''
ELSE '' END
但是有没有办法在多个条件上做到这一点呢?使用关键字ILIKE或和? 例如
SELECT a,
CASE a WHEN LIKE '1' or LIKE 'one' THEN 'one'
WHEN LIKE '2' and (LIKE 'two' or LIKE 'too') THEN 'two'
ELSE 'other'
END
FROM test;
显然这上面不起作用,我尝试了一些其他的变化,但不能让它工作(如果可能的话)?
不,简短的CASE
语法只适用于每个分支的单个条件,并且必须与=
操作符进行比较。根据需要使用其他语法
您可以在这里使用Postgres的正则表达式运算符:
SELECT a,
CASE WHEN a ~ '^(1|one)$' THEN 'one'
WHEN a ~ '^(2|two)$' THEN 'two'
ELSE 'other'
END
FROM test;