【问题标题】:SQL Replace command with wildcardsSQL 使用通配符替换命令
【发布时间】:2015-08-03 14:10:52
【问题描述】:

基本上我试图替换括号内的字符串中的所有内容。

例如,字符串 '123[1abc]abc' 会变成 '123[xx]abc'

select replace(string,'[%]','[xx]') as string2 from table1

当然不行。

括号内的值总是不同的,要找到所有的个体可能性根本不可行。此外,括号内的一些值也出现在括号外,但我只希望它们更改为括号内的部分。

如果这有什么不同的话,我正在使用 Microsoft SQL Server。

【问题讨论】:

    标签: sql sql-server replace wildcard


    【解决方案1】:

    假设只有一个这样的表达式并且方括号只出现一次,你可以使用stuff()来构造字符串:

    select stuff(str,
                 charindex('[', str) + 1,
                 charindex(']', str) - charindex('[', str) - 1,
                 'xx')
    

    【讨论】:

      【解决方案2】:

      你可以通过字符串操作来做到这一点。将字符串的左侧向上到左括号,添加“xx”,然后从右括号开始添加右侧。

      SELECT LEFT(string, CHARINDEX('[', string)) 
             + 'xx' 
             + RIGHT(string, LEN(string) - CHARINDEX(']', string) + 1) AS string2
          FROM table1;
      

      【讨论】:

        猜你喜欢
        • 2016-11-24
        • 1970-01-01
        • 2012-02-01
        • 2013-04-01
        • 2017-02-23
        • 2023-04-11
        • 2019-09-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多