如何替换MS Access SQL中字符串的最后一部分?

How do I replace the last part of a string in MS Access SQL?

提问人:Daniel Perez 提问时间:10/11/2023 更新时间:10/12/2023 访问量:43

问:

我在数据库的一个字段中得到了以下字符串:

  1. 随心所欲
  2. 无论经理什么
  3. 随心所欲

我需要将 MAN 一词更改为 MANUAL

我可以使用以下代码更新字符串,例如第 3 种情况:

SET field_Desc = REPLACE(field_Desc , ' MAN ',' MANUAL ')

但是由于REPLACE函数的MAN中的最后一个空格无法更新第一种情况,因此为了像第二种情况一样在不更改包含MAN的单词的情况下修复它,我尝试了以下代码:

SET field_Desc = REPLACE(field_Desc , 'MAN','MANUAL')
WHERE field_Desc LIKE '% MAN'

但这行不通,如果有人能指导我,我将不胜感激。

SQL 字符串 ms-access 替换

评论

0赞 M. Rizzo 10/11/2023
您不能使用 RTrim() 正确修剪您的field_Desc,然后执行替换 REPLACE(field_Desc , 'MAN','MANUAL') 吗?
0赞 Daniel Perez 10/11/2023
@M.Rizzo字段没有空格,我只是将空格放在REPLACE代码中以匹配第3个大小写单词

答:

2赞 Shahram Alemzadeh 10/11/2023 #1

这可以使用带有模式的正则表达式来完成。whole word

首先添加对 MicroSoft VBScript RegularExpressions 的引用,然后编写一个公共函数,如下所示:

Public Function RegexReplace( _
            input_string As String, _
            find_string As String, _
            replace_string As String) As String
    Dim regex As New RegExp
    regex.IgnoreCase = True
    regex.Global = True
    regex.Multiline = True
    regex.Pattern = "\b" + find_string + "\b"
    RegexReplace = regex.Replace(input_string, replace_string)
End Function

用法:

SELECT field_Desc, RegexReplace(field_Desc , "MAN" , "MANUAL") as Replaced
FROM Table1

输出:enter image description here

0赞 Gustav 10/12/2023 #2

首先换行空格,然后替换空格,最后删除空格:

SET field_Desc = TRIM(REPLACE(' ' & field_Desc & ' ', ' MAN ',' MANUAL '))