【问题标题】:How to replace a string with a specific value directly in SQL SELECT query (Oracle)如何在 SQL SELECT 查询(Oracle)中直接用特定值替换字符串
【发布时间】:2020-08-06 10:59:48
【问题描述】:

我有一张表,里面有员工数据:

+----+-------+----------+------------+
| ID | Name  | LastName | Salutation |
+----+-------+----------+------------+
|  1 | John  | Doe      | Mr         |
|  2 | Alice | Smith    | Ms         |
+----+-------+----------+------------+

我想选择其中一些数据,但我想使用 SQL 查询本身将 Mr 替换为 1Ms 替换为 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

【问题讨论】:

    标签: sql oracle oracle-sqldeveloper regexp-replace


    【解决方案1】:

    您可以使用decode

    select ID, Name, LastName.
        DECODE(Salutation,'Mr',1,2) as Salutation
    from employee
    

    【讨论】:

      【解决方案2】:

      您可以使用case 语句来实现它。这是DEMO

      select
          ID,
          Name,
          LastName,
          (case when Salutation = 'Mr' then 1  else 2 end) as Salutation
      from employee
      order by
          ID
      

      【讨论】:

        【解决方案3】:
        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' 并返回一个表,我们为其提供了别名 'TMP_TABLE'。然后,“TMP_TABLE”中所有出现的“Ms”都将替换为“2”

        【讨论】:

        • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常质量更高,更有可能吸引投票。
        猜你喜欢
        • 2021-07-09
        • 1970-01-01
        • 2012-03-22
        • 2019-04-12
        • 2011-09-25
        • 2014-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多