代码之家  ›  专栏  ›  技术社区  ›  Amruta

在SQL Server中使用replace时的大小写

  •  0
  • Amruta  · 技术社区  · 7 年前

    我创建了一个select语句

    SELECT [source_name]+''''/''''+[schema_name]+''''/''''+[table_name] AS [path], 
           [application_name], 
           [database_name], 
           [schema_name], 
           [table_name], 
           [source_name], 
           Substring(source_table_name, 0, 3)           AS source, 
           replace([query],''''desc'''',''''"DESC"'''') AS query, 
    FROM   [cdi].[parameter_master] p (nolock) 
    JOIN   [cdi].application_master a (nolock) 
    ON     a.application_id = p.application_id 
    

    在这部分 replace([query],''''desc'''',''''\"DESC\"'''') as query

    [查询]值为

    SELECT a.desc, 
           a.occ_desc            AS occ_desc, 
           a.dth_dt              AS dth_dt, 
           a.hire_dt             AS hire_dt, 
           a.insd_empe_nbr       AS insd_empe_nbr, 
           a.surg_ind            AS surg_ind, 
           a.src_clm_pty_id      AS src_clm_pty_id, 
           a.elmtry_clm_anchr_id AS elmtry_clm_anchr_id, 
           a.lic_nbr_txt         AS lic_nbr_txt, 
           a.atty_hire_rsn_desc  AS atty_hire_rsn_desc, 
           a.atty_catg_desc      AS atty_catg_desc, 
           a.dfns_appt_dt        AS dfns_appt_dt, 
           a.empr_nm             AS empr_nm, 
           a.extl_refr_cd        AS extl_refr_cd, 
           a.src_sys_cd          AS src_sys_cd 
    FROM   dbaall.pty_rol_in_clm a 
    WHERE  a.e_tistmp >= timestamp('2018-01-01     00:00:00') 
    OR     ( 
                  a.e_to_tistmp >= timestamp('2018-01-01 00:00:00') 
           AND    a.e_to_tistmp < timestamp('2018-03-31 00:00:00')) 
    

    我只想换一个 a.DESC a.\"DESC\"

    但是 replace() 函数替换[查询]字符串中出现的所有描述。

    我想写一个基于if.desc的case-when语句,然后只替换else字符串不应该被替换。

    我怎么解决这个问题?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Amruta    7 年前

    这段代码解决了这个问题: 替换([查询]、''a.desc''、''a.\'desc'')