Sql server 在sql server中使用replace时的情况

Sql server 在sql server中使用replace时的情况,sql-server,replace,case-when,Sql Server,Replace,Case When,我创建了一个select语句 SELECT [source_name]+''''/''''+[schema_name]+''''/''''+[table_name] AS [path], [application_name], [database_name], [schema_name], [table_name], [source_name], Substring(source_table_name

我创建了一个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 
在这部分
将([query]、“desc”、“desc”替换为查询

[查询]值为

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、 occ描述为occ描述,
a、 dth_dt作为dth_dt,
a、 雇用作为雇用,
a、 作为督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察督察,
a、 surg_ind作为surg_ind,
a、 src_clm_pty_id作为src_clm_pty_id,
a、 elmtry_clm_主播id作为elmtry_clm_主播id,
a、 lic_nbr_txt作为lic_nbr_txt,
a、 作为附件的附件,
a、 atty_catg_desc作为atty_catg_desc,
a、 dfns_appt_dt作为dfns_appt_dt,
a、 empr_nm作为empr_nm,
a、 extl_refr_cd作为extl_refr_cd,
a、 src_sys_cd作为src_sys_cd
来自DBALL.pty_rol_in_clm a
其中a.e_tistmp>=时间戳('2018-01-01 00:00:00')
或(
a、 e_to_tistmp>=时间戳('2018-01-01 00:00:00')
和a.e_to_tistmp<时间戳('2018-03-31 00:00:00'))
我只想将
a.DESC
替换为
a.“DESC\”

但是
replace()
函数将替换[query]字符串中出现的所有DESC

我想写一个case when语句,它基于if.desc find然后only replace else字符串不应该被替换


如何解决这个问题?

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

可能很简单:<代码>替换([查询],''a.DESC'',''a.DESC'')?或<代码>替换([查询],''.DESC'',''.DESC'.\'DESC'')有点离题,但在继续到处乱扔NOLOCK之前,你应该先读这篇文章。谢谢@killer Queen,@JNevil的回答。我用杀手皇后的方法解决了这个问题。@Sean Lange-谢谢你分享这个博客。