将TAB_A 表为主表,字段TRAN_CODE 数据为”A0083***0001”等,TAB_A表通过字段TRAN_CODE与 TAB_B表中字段DI_CODE关联,但B表中DI_CODE的数据可能存在”B0083***0001”,”b0083***0001”等,需要将TAB_B表中的”b0083***0001”先暂时转化成”B0083***0001”,再将”B0083***0001”暂时转化成”A0083***0001”,这个SQL怎么实现?
时间: 2023-07-23 13:08:01 浏览: 78
您可以尝试使用以下 SQL 语句实现:
```
UPDATE TAB_B
SET DI_CODE = REPLACE(DI_CODE, 'b', 'B')
WHERE DI_CODE LIKE 'b0083%';
UPDATE TAB_B
SET DI_CODE = REPLACE(DI_CODE, 'B0083', 'A0083')
WHERE DI_CODE LIKE 'B0083%';
SELECT *
FROM TAB_A
INNER JOIN TAB_B ON TAB_A.TRAN_CODE = TAB_B.DI_CODE;
```
第一条 SQL 语句将 TAB_B 表中 DI_CODE 字段以 'b0083' 开头的数据替换成 'B0083' 开头的数据。
第二条 SQL 语句将 TAB_B 表中 DI_CODE 字段以 'B0083' 开头的数据替换成 'A0083' 开头的数据。
第三条 SQL 语句将 TAB_A 表与 TAB_B 表关联起来,以 TAB_A 表的 TRAN_CODE 字段与 TAB_B 表的 DI_CODE 字段进行匹配。
相关问题
将TAB_A 表为主表,字段TRAN_CODE 数据为”A0083***0001”等,TAB_A表通过字段TRAN_CODE与 TAB_B表中字段DI_CODE关联,但B表中DI_CODE的数据可能存在”B0083***0001”,”b0083***0001”等,需要将TAB_B表中的”b0083***0001”先转化成”B0083***0001”,再将”B0083***0001”转化成”A0083***0001”,这个SQL怎么实现?
可以使用以下SQL语句实现:
```
UPDATE TAB_B
SET DI_CODE = REPLACE(DI_CODE, 'b', 'B')
WHERE DI_CODE LIKE 'b0083%';
UPDATE TAB_B
SET DI_CODE = REPLACE(DI_CODE, 'B', 'A')
WHERE DI_CODE LIKE 'B0083%';
SELECT *
FROM TAB_A
INNER JOIN TAB_B
ON TAB_A.TRAN_CODE = TAB_B.DI_CODE;
```
第一条UPDATE语句将TAB_B表中DI_CODE字段中以"b0083"开头的数据中的"b"替换为"B",将其转化为"B0083***0001"格式。
第二条UPDATE语句将TAB_B表中DI_CODE字段中以"B0083"开头的数据中的"B"替换为"A",将其转化为"A0083***0001"格式。
最后一条SELECT语句是将TAB_A表和TAB_B表通过TRAN_CODE和DI_CODE字段关联起来,得到结果。
将TAB_A 表为主表,字段TRAN_CODE 数据为”A0083***0001”等,通过字段TRAN_CODE与 TAB_B表中字段DI_CODE关联,但B表中DI_CODE的数据可能存在”B0083***0001”,”b0083***0001”等,需要将TAB_B表中的”b0083***0001”先转化成”B0083***0001”,再将”B0083***0001”转化成”A0083***0001”,这个SQL怎么实现?
可以使用 SQL 的字符串函数来实现该需求,具体的 SQL 语句如下:
```
UPDATE TAB_B
SET DI_CODE = REPLACE(REPLACE(DI_CODE, 'b', 'B'), 'B', 'A')
WHERE DI_CODE LIKE 'b0083%' ESCAPE '|'
AND EXISTS (
SELECT * FROM TAB_A
WHERE TRAN_CODE = REPLACE(REPLACE(DI_CODE, 'b', 'B'), 'B', 'A')
);
```
上述 SQL 语句中,使用了 REPLACE 函数将小写字母 b 转化为大写字母 B,然后再将 B 转化为 A,以实现将 TAB_B 表中的 DI_CODE 字段值转化为对应的 TRAN_CODE。同时,使用了 LIKE 操作符对 DI_CODE 进行模糊匹配,并指定 ESCAPE 字符为竖线 |,以避免 LIKE 操作符中的通配符 % 被误认为是转义字符。最后,使用 EXISTS 子查询来判断对应的 TRAN_CODE 是否存在于 TAB_A 表中,若存在则更新 TAB_B 表中的 DI_CODE 字段值。
阅读全文