oracle 查询语句.table 表当 c=1 时.查询字段 a.当 c=2 时查询 b 字段
时间: 2024-03-20 11:45:18 浏览: 53
你可以使用 Oracle 中的 CASE 表达式来实现这个需求,示例代码如下:
```
SELECT
CASE
WHEN c = 1 THEN a
WHEN c = 2 THEN b
END AS result
FROM
table;
```
在上面的查询语句中,我们使用 CASE 表达式来根据 c 字段的值来选择需要查询的字段。当 c 等于 1 时,查询 a 字段的值;当 c 等于 2 时,查询 b 字段的值。通过 AS 关键字,我们将结果命名为 result 字段并输出。你可以根据实际情况修改表名和字段名。
相关问题
oracle触发器当A表新增时根据条件判断查询出来插入到B表,两表字段名字不同
Oracle触发器是一种特殊的存储过程,它们会在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行。为了实现在A表新增记录时,根据某些条件从A表查询数据并插入到B表,即使字段名不同,你可以创建一个BEFORE INSERT类型的触发器。以下是步骤:
1. **创建触发器**:
使用SQL语句在A表上创建触发器,例如:
```sql
CREATE OR REPLACE TRIGGER trg_insert_A_to_B
BEFORE INSERT ON A_TABLE
FOR EACH ROW
BEGIN
-- 当满足某个条件时执行
IF -- 条件判断语句
THEN
-- 将A表中的数据映射到B表字段
INSERT INTO B_TABLE (field_b_column1, field_b_column2)
VALUES (:NEW.field_a_column1, :NEW.field_a_column2);
END IF;
END;
```
`field_a_column1` 和 `field_a_column2` 是A表中的字段,`field_b_column1` 和 `field_b_column2` 是B表中的相应字段。
2. **条件判断**:
在IF语句里添加适当的条件,比如基于新插入的行值来决定是否需要插入B表,例如检查A表的新值是否大于某个阈值。
3. **注意点**:
- 触发器中的`:NEW`是一个特殊变量,表示新插入或更新的数据行。
- 如果字段名称完全对应,无需额外处理;若不匹配,可能需要使用动态SQL或包装函数进行转换。
oracle 查询字段中‘.’个数加1
在Oracle中,可以使用`LENGTH`函数获取字符串的长度,可以使用`REGEXP_COUNT`函数获取字符串中某个正则表达式匹配的次数。因此,如果要查询某个字段中包含的点号(.)个数加1,可以使用以下SQL语句:
```
SELECT LENGTH(field_name) - LENGTH(REGEXP_REPLACE(field_name, '[^.]+', '')) + 1 AS dot_count
FROM table_name;
```
其中,`field_name`是要查询的字段名,`table_name`是要查询的表名。这个SQL语句使用正则表达式`'[^.]+`匹配字段中的所有点号,并将其替换成空字符串,然后计算替换前后的字符串长度差值,即为点号个数加1。最终查询结果会返回一个名为`dot_count`的列,其中包含每个记录中点号(.)个数加1的值。
阅读全文