如何在 SQL SELECT 查询中直接用特定值替换字符串 (Oracle)
How to replace a string with a specific value directly in SQL SELECT query (Oracle)
我有一个 table,里面有员工数据:
+----+-------+----------+------------+
| ID | Name | LastName | Salutation |
+----+-------+----------+------------+
| 1 | John | Doe | Mr |
| 2 | Alice | Smith | Ms |
+----+-------+----------+------------+
我想 select 一些数据,但我想使用 [=33] 将 Mr
替换为 1
并将 Ms
替换为 2
=]查询自身。
我尝试使用 REGEXP_REPLACE
实际上对其中一种称呼有效的方法:
SELECT ID, Name, LastName, REGEXP_REPLACE(Salutation, 'Mr', '1') FROM employees
它给了我以下结果:
+----+-------+----------+------------+
| ID | Name | LastName | Salutation |
+----+-------+----------+------------+
| 1 | John | Doe | 1 |
| 2 | Alice | Smith | Ms |
| 3 | John | Smith | 1 |
| 4 | Alice | Doe | Ms |
+----+-------+----------+------------+
如何将 Ms
也替换为 2
?
您可以使用case
语句来实现它。这是 DEMO
select
ID,
Name,
LastName,
(case when Salutation = 'Mr' then 1 else 2 end) as Salutation
from employee
order by
ID
您可以使用 decode
select ID, Name, LastName.
DECODE(Salutation,'Mr',1,2) as Salutation
from employee
SELECT
ID, Name, LastName,
REPLACE(TMP_TABLE.TMP_Salutation, 'Ms', '2')
FROM (
SELECT
REPLACE(Salutation, 'Mr', '1') TMP_Salutation
FROM employees
) TMP_TABLE;
此代码将首先在子查询中将所有出现的 'Mr' 替换为“1”,并将 return 替换为 table,我们为其提供别名 'TMP_TABLE'。然后,'TMP_TABLE' 中出现的所有 'Ms' 都将替换为 '2'
我有一个 table,里面有员工数据:
+----+-------+----------+------------+
| ID | Name | LastName | Salutation |
+----+-------+----------+------------+
| 1 | John | Doe | Mr |
| 2 | Alice | Smith | Ms |
+----+-------+----------+------------+
我想 select 一些数据,但我想使用 [=33] 将 Mr
替换为 1
并将 Ms
替换为 2
=]查询自身。
我尝试使用 REGEXP_REPLACE
实际上对其中一种称呼有效的方法:
SELECT ID, Name, LastName, REGEXP_REPLACE(Salutation, 'Mr', '1') FROM employees
它给了我以下结果:
+----+-------+----------+------------+
| ID | Name | LastName | Salutation |
+----+-------+----------+------------+
| 1 | John | Doe | 1 |
| 2 | Alice | Smith | Ms |
| 3 | John | Smith | 1 |
| 4 | Alice | Doe | Ms |
+----+-------+----------+------------+
如何将 Ms
也替换为 2
?
您可以使用case
语句来实现它。这是 DEMO
select
ID,
Name,
LastName,
(case when Salutation = 'Mr' then 1 else 2 end) as Salutation
from employee
order by
ID
您可以使用 decode
select ID, Name, LastName.
DECODE(Salutation,'Mr',1,2) as Salutation
from employee
SELECT
ID, Name, LastName,
REPLACE(TMP_TABLE.TMP_Salutation, 'Ms', '2')
FROM (
SELECT
REPLACE(Salutation, 'Mr', '1') TMP_Salutation
FROM employees
) TMP_TABLE;
此代码将首先在子查询中将所有出现的 'Mr' 替换为“1”,并将 return 替换为 table,我们为其提供别名 'TMP_TABLE'。然后,'TMP_TABLE' 中出现的所有 'Ms' 都将替换为 '2'