gpt4 book ai didi

mysql - 如何检查字符串中的字符并在插入之前替换该字符

转载 作者:可可西里 更新时间:2023-11-01 07:44:39 24 4
gpt4 key购买 nike

好的,这道题涉及复杂存储过程的一部分,该过程将新实体插入到多个表中。

我目前遇到困难的部分需要像这样工作:

  1. 插入具有原始名称的实体
  2. 检查新实体的名称是否包含表 A“字符”中列出的任何特殊字符
  3. 如果是,则用表 A 中的“替换字符”替换该字符

编辑:我已经让它部分工作但仍未完成。我在显示每个字符替换组合时仍然遇到问题。此外,在替换字符出现不止一次的情况下,例如“.”,替换需要彼此独立发生。

例如:#www.test&aol.com -> #wwwtest&aol.com, #www.test&aolcom

这是一个粗略的开始,我知道其中的某些部分行不通,但我认为这是一个不错的开始:

declare @test varchar(50)
set @test = '#www.test&aol.com'
declare @len int, @ctr int
set @len = LEN(@test)
set @ctr = 1

declare @newName varchar(50)
declare @matchedChar table(match varchar(10),replaceChar varchar(10),processed int default(0))
declare @alternateEntities table(name varchar(50))
declare @repChar varchar(10)
declare @selectedChar varchar(1)

while @ctr<=@len
begin
--Insert matching characters and replacement characters into table variable,
--this is necessary for the # character, which has multiple replacement characters
insert into @matchedChar (match,replaceChar) select Character,ReplacementCharacter from tblTransliterations where Character = SUBSTRING(@test,@ctr,1)

--loop
while (select COUNT(*) from @matchedChar where processed = 0)>0
begin
--get the top character from table variable
set @selectedChar = (select top 1 match from @matchedChar where processed = 0)
--get replacement character
set @repChar = (select top 1 replaceChar from @matchedChar where processed = 0)
--replace character in name string
--set @newName = (select Replace(@test,@selectedChar,@repChar))
set @newName = (select STUFF(@test,CHARINDEX(@selectedChar,@test),1,@repChar))
--update table variable to move onto next character
update @matchedChar set processed = 1 where @repChar = replaceChar
--add name with replaced character to alternate entities table
insert into @alternateEntities (name) values (@newName)
end
set @ctr = @ctr+1
set @len = LEN(@test)
end

select * from @alternateEntities

最佳答案

使用基于集合的方法代替循环。

  1. 创建一个临时表并填充 NVARCHAR(100) 类型的“Words”列,调用临时表 Invalid_Words

  2. 为每个标记在 Invalid_Words 上创建一列,并使 col 类型 = bit

  3. 如果单词包含 token ,则通过一系列更新语句更新临时表位列

您现在已经定义了每个单词匹配的标记。

下一部分是替换。

关于mysql - 如何检查字符串中的字符并在插入之前替换该字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25087574/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com