CASE WHEN #str LIKE '1%' THEN '国有企业' ,这个函数如果要查多个开头比对呢?
时间: 2024-09-07 16:02:16 浏览: 23
在SQL中,`CASE WHEN` 是一个条件表达式,用于进行条件判断,并根据条件返回不同的结果。在你提供的例子中,使用了 `LIKE` 操作符来检查某个字段 `#str` 是否以 '1' 开头,如果是,则返回 '国有企业'。
如果你想要检查多个不同的开头,可以使用 `OR` 关键字或者 `IN` 关键字来组合多个条件。以下是使用 `OR` 的例子:
```sql
CASE
WHEN #str LIKE '1%' THEN '国有企业'
WHEN #str LIKE '2%' THEN '民营企业'
WHEN #str LIKE '3%' THEN '外资企业'
-- 可以继续添加更多的 WHEN 条件来匹配不同的开头
ELSE '其他类型'
END
```
另一种方式是使用 `IN` 关键字,但需要注意的是 `IN` 在这里并不会检查前缀,而是用于检查字段值是否在一组特定的值中。如果你确实想要使用 `IN` 来处理前缀,可能需要结合其他 SQL 函数来实现,例如 `SUBSTRING`:
```sql
CASE
WHEN SUBSTRING(#str, 1, 1) IN ('1', '2', '3') THEN '相应类型'
-- 以此类推,可以继续添加更多的 WHEN 条件
ELSE '其他类型'
END
```
在这个 `SUBSTRING` 的例子中,我们提取 `#str` 字段的第一个字符,并检查它是否属于一组特定的字符集。
相关问题
如果执行这个逻辑case when PlaceCode like 'shiqu%' then '370200' when PlaceCode like 'shinan%' then '370202' when PlaceCode like 'shibei%' then '370203' when PlaceCode like 'huangdao%' then '370211' when PlaceCode like 'laoshan%' then '370212' when PlaceCode like 'licang%%' then '370213' when PlaceCode like 'chengyang%' then '370214' when PlaceCode like 'kaifa%' then '370215' when PlaceCode like '%jichang%' then '370216' when PlaceCode like 'laixi%' then '370285' when PlaceCode like 'jiaozhou%' then '370281' when PlaceCode like 'jimo%' then '370282' when PlaceCode like 'pingdu%' then '370283' end应该怎么写呢
你可以把这个case-when语句放在你的SQL语句中,如:
```
SELECT PlaceCode,
CASE
WHEN PlaceCode LIKE 'shiqu%' THEN '370200'
WHEN PlaceCode LIKE 'shinan%' THEN '370202'
WHEN PlaceCode LIKE 'shibei%' THEN '370203'
WHEN PlaceCode LIKE 'huangdao%' THEN '370211'
WHEN PlaceCode LIKE 'laoshan%' THEN '370212'
WHEN PlaceCode LIKE 'licang%%' THEN '370213'
WHEN PlaceCode LIKE 'chengyang%' THEN '370214'
WHEN PlaceCode LIKE 'kaifa%' THEN '370215'
WHEN PlaceCode LIKE '%jichang%' THEN '370216'
WHEN PlaceCode LIKE 'laixi%' THEN '370285'
WHEN PlaceCode LIKE 'jiaozhou%' THEN '370281'
WHEN PlaceCode LIKE 'jimo%' THEN '370282'
WHEN PlaceCode LIKE 'pingdu%' THEN '370283'
END AS PlaceCodeNew
FROM your_table;
```
这个语句会根据PlaceCode的值匹配对应的值,并返回一个新的列 PlaceCodeNew。
pgsql case when查询多个字段
在PostgreSQL中,`CASE WHEN` 语句用于条件判断,并可以根据满足的条件返回不同的值。如果你想根据多个字段进行查询并返回不同的结果,你可以组合多个 `WHEN` 子句。这是一个基本的语法示例:
```sql
SELECT column_name,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN condition3 THEN result3
ELSE default_result
END AS calculated_column
FROM table_name;
```
在这个例子中:
- `column_name` 是你要查询的基础字段。
- `condition1`, `condition2`, 和 `condition3` 是对 `column_name` 中各字段值的条件判断,如果条件成立,则返回相应的 `result1`, `result2`, 或 `result3`。
- `default_result` 是当所有 `WHEN` 条件都不满足时返回的结果。
如果你需要同时根据两个字段的组合进行判断,可以在 `WHEN` 里包含这两个字段的操作。例如:
```sql
SELECT user_id,
CASE
WHEN status = 'active' AND age > 18 THEN 'Adult'
WHEN status = 'inactive' THEN 'Inactive'
ELSE 'Unknown'
END as user_status
FROM users;
```
这将根据用户的状态和年龄分别返回 'Adult', 'Inactive' 或者 'Unknown'。