sql server-sql将多个字符替换为单个字符
发布时间:2022-04-14 02:36:25 587
相关标签: # kotlin# 数据库# 数据库
我想用一个*
价值我已经研究过这个问题,但无法复制我的发现。我也觉得我把这个过程复杂化了。下面是我目前正在做的工作的分解:
创建临时表,将数字替换为*。
这是我需要帮助的部分。我需要用一个字符替换多个字符
*
.最后一步是查询我的数据并对数据进行分组。
查询:
CREATE TABLE #CMS_ERROR_LOG
(
ERROR_LOG_BODY NVARCHAR(MAX),
);
INSErT INTO #CMS_ERROR_LOG
select REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE
(REPLACE ([ERROR_LOG_BODY], '0', '*'),
'1', '*'),
'2', '*'),
'3', '*'),
'4', '*'),
'5', '*'),
'6', '*'),
'7', '*'),
'8', '*'),
'9', '*')
FROM CMS_ERROR_LOG
WHERE ERROR_LOG_MESSAGE = 'API Request Capture'
SELECT
SUBSTRING([ERROR_LOG_BODY],1,CHARINDEX(',', [ERROR_LOG_BODY])-2) AS 'Request'
FROM #CMS_ERROR_LOG
GROUP BY SUBSTRING([ERROR_LOG_BODY],1,CHARINDEX(',', [ERROR_LOG_BODY])-2)
我读了一些关于使用#
在replace语句中,只使用单个字符替换,但无法使其工作。
当前结果:[POST]URL:https://localhost:*****/api/身份验证/身份验证
预期结果:[POST]URL:https://localhost:*/api/身份验证/身份验证
更新:我已经能够将数据的格式设置得更接近我的需要:
--DROP TABLE #CMS_ERROR_LOG
CREATE TABLE #CMS_ERROR_LOG
(
ERROR_LOG_BODY NVARCHAR(MAX),
);
INSErT INTO #CMS_ERROR_LOG
select
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
([ERROR_LOG_BODY], '0', '*'),'1', '*'),'2', '*'),'3', '*'),'4', '*'),'5', '*'),'6', '*'),'7', '*'),'8', '*'),'9', '*')
FROM CMS_ERROR_LOG
WHERE ERROR_LOG_MESSAGE = 'API Request Capture'
--CLEAN UP
INSERT INTO #CMS_ERROR_LOG
SELECT
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
([ERROR_LOG_BODY], '**', '*'),'***', '*'),'****', '*'),'*****', '*'),'******', '*'),'*******', '*'),'********', '*'),'*********', '*')
FROM #CMS_ERROR_LOG
INSERT INTO #CMS_ERROR_LOG
SELECT
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
([ERROR_LOG_BODY], 'cases/*******', 'cases/*'),'contacts/******', 'contacts/*'),'LoanNumber=**********', 'LoanNumber=*'),'CourtCaseNumber=**', 'CourtCaseNumber=*'),'PropertyAddress=****', 'PropertyAddress=*'),'cases/**', 'cases/*'),'********', '*'),'*********', '*')
FROM #CMS_ERROR_LOG
SELECT
SUBSTRING([ERROR_LOG_BODY],1,CHARINDEX(',', [ERROR_LOG_BODY])-2) AS 'Request'
FROM #CMS_ERROR_LOG
GROUP BY SUBSTRING([ERROR_LOG_BODY],1,CHARINDEX(',', [ERROR_LOG_BODY])-2)
DROP TABLE #CMS_ERROR_LOG
问题是,它仍然没有正确地清理所有字符串:例如,我最终得到了这样的结果:
[获取]网址:https://masked.../masked.../api/cases/*****/联系人/*
[获取]网址:https://masked.../masked.../api/casefiles/******/贷款记录
更新:我已经更新了我的SQL。我能解决我的问题。现在正试图清理未经编辑的数据。很高兴有更好的替代方法。然而,我使用的是2012版,翻译不是一个选项。
新查询:
--DROP TABLE #CMS_ERROR_LOG
CREATE TABLE #CMS_ERROR_LOG
(
ERROR_LOG_BODY NVARCHAR(MAX),
);
INSErT INTO #CMS_ERROR_LOG
select
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
([ERROR_LOG_BODY], '0', ''),'1', ''),'2', ''),'3', ''),'4', ''),'5', ''),'6', ''),'7', ''),'8', ''),'9', '')
FROM CMS_ERROR_LOG
WHERE ERROR_LOG_MESSAGE = 'API Request Capture'
--CLEAN UP
INSERT INTO #CMS_ERROR_LOG
SELECT
REPLACE
([ERROR_LOG_BODY], '//', '/*/')
FROM #CMS_ERROR_LOG
INSERT INTO #CMS_ERROR_LOG
SELECT
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE
([ERROR_LOG_BODY], 'https:/*/', 'https://'),'=&', '=*&'),'OfficeCode=NJ', 'OfficeCode=*'),'OfficeCode=VA', 'OfficeCode=*'),'OfficeCode=NY', 'OfficeCode=*')
FROM #CMS_ERROR_LOG
--Office Codes
INSERT INTO #CMS_ERROR_LOG
SELECT
REPLACE(REPLACE(REPLACE(REPLACE
([ERROR_LOG_BODY], 'OfficeCode=NJ', 'OfficeCode=*'),'OfficeCode=VA', 'OfficeCode=*'),'OfficeCode=NY', 'OfficeCode=*'),'OfficeCode=FL', 'OfficeCode=*')
FROM #CMS_ERROR_LOG
INSERT INTO #CMS_ERROR_LOG
SELECT
REPLACE(REPLACE(REPLACE(REPLACE
([ERROR_LOG_BODY], 'officeCode=NJ', 'OfficeCode=*'),'officeCode=VA', 'OfficeCode=*'),'officeCode=NY', 'OfficeCode=*'),'officeCode=FL', 'OfficeCode=*')
FROM #CMS_ERROR_LOG
SELECT
SUBSTRING([ERROR_LOG_BODY],1,CHARINDEX(',', [ERROR_LOG_BODY])-2) AS 'Request'
FROM #CMS_ERROR_LOG
GROUP BY SUBSTRING([ERROR_LOG_BODY],1,CHARINDEX(',', [ERROR_LOG_BODY])-2)
DROP TABLE #CMS_ERROR_LOG
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报