【问题标题】:Case when with replace in sql server在 sql server 中替换的情况
【发布时间】:2018-12-19 12:41:23
【问题描述】:

我已经创建了一个选择语句

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() 函数会替换 [query] 字符串中出现的所有 DESC。

我想写一个 case when 语句基于 if .desc found then only replace else string 不应该被替换。

我该如何解决这个问题?

【问题讨论】:

  • 也许很简单:replace([query],''''a.DESC'''',''''a.\"DESC\"'''')?
  • replace([query],''''.DESC'''',''''.\"DESC\"'''')
  • 有点跑题了,但你应该先阅读这篇文章,然后再继续到处喷 NOLOCK。 blogs.sentryone.com/aaronbertrand/bad-habits-nolock-everywhere
  • 谢谢@killer Queen,@JNevil 的回答。我通过 Killer Queen 的方法解决了这个问题。@Sean Lange- 感谢您分享博客。

标签: sql-server replace case-when


【解决方案1】:

这段代码解决了这个问题: replace([查询],''''a.DESC'''',''''a.\"DESC\"'''')

【讨论】:

    猜你喜欢
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    相关资源
    最近更新 更多