【问题标题】:MYSQL: Regex substituionMYSQL:正则表达式替换
【发布时间】:2016-07-21 14:10:55
【问题描述】:

所以我将尝试解释我想要完成的工作。

我希望将一个字符串从 FIELD1 复制到 FIELD2,将其设为大写,并根据另一个字段的值(FIELD3:是/否),将“HOST-”或“-NET”附加到 FIELD2 .另外,这也只需要影响FIELD4值为“bar”的条目。

例如 FIELD1 包含文本“foo”,其 Host 值为“yes”。 FIELD2 应为“HOST-FOO”。

对于 FIELD3 值“否”,FIELD2 将读取“FOO-NET”。

我和我的同事正在讨论这个问题,他相信这可以通过正则表达式来完成。我在正确的球场吗?

【问题讨论】:

    标签: mysql regex


    【解决方案1】:

    如果我理解正确你的问题,我认为使用 CASE 更简单

    select case field3 when 'yes' then concat( 'HOST-' . field1)
                       when 'no' then concat( field1 .'-NET')  
           END as Field2 
    from my_tbale 
    where field4 = 'bar';
    

    【讨论】:

    • 这看起来应该可以工作,但它只需要在 FIELD4 为“bar”时发生。我需要让你知道,我不在我的 MySQL 领域。这个语句不会改变 FIELD1 中的字符串对吗?如果我尝试通过 Java 解释逻辑,这会有所帮助吗?我更倾向于这样思考!
    • 我已经更新了 aswer 。 ..此查询不会更改 column1 中的值 ..如果您使用的是选择,则不需要在 java 中进行转换,而是直接使用结果..
    • 最后一个问题,是否也可以检查 FIELD1 是否已经以 'HOST-' 或 '-NET' 开始/结束,所以我不会加倍?
    • 是的 .. 当然 .. 你可以在 where clasue ...eg: and (left(filed1,5) != 'HOST-' AND right(filed1,4) ! ='-NET')
    猜你喜欢
    • 2011-03-29
    • 2011-03-10
    • 2012-12-07
    • 1970-01-01
    • 2012-10-15
    • 2019-01-24
    • 2015-01-24
    • 1970-01-01
    相关资源
    最近更新 更多