在 sql 服务器中替换的情况
Case when with replace in sql server
我创建了一个 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()
函数替换了 [query] 字符串中出现的所有 DESC。
我想写一个基于 if .desc found then only replace else string should not get replaced 的 case when 语句。
我该如何解决这个问题?
这段代码解决了这个问题:
替换([查询],''''a.DESC'''',''''a.\"DESC\"'''')
我创建了一个 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()
函数替换了 [query] 字符串中出现的所有 DESC。
我想写一个基于 if .desc found then only replace else string should not get replaced 的 case when 语句。
我该如何解决这个问题?
这段代码解决了这个问题: 替换([查询],''''a.DESC'''',''''a.\"DESC\"'''')