【问题标题】:How to match pattern in a string in SQL query?如何在 SQL 查询中匹配字符串中的模式?
【发布时间】:2019-04-19 21:08:48
【问题描述】:

您好,我有一个字符串,它是数据库中列的值。 “Java(简单)_New=AB_U17484_JAVA00”

我想写一个sql查询来检查字符串是否有下面

_New={Box1}__{Box2}_{Box3}

Box1 总是两个字符,只有字母,Box 2 是 7 个字符,只有数字和字母,Box 3 必须匹配 JAVA 和它后面的任何字符..like JAVA%

如何在 sql 查询中使用正则表达式来实现这一点

【问题讨论】:

    标签: java mysql sql regex


    【解决方案1】:

    在您的示例中,box2 中有六个字符而不是七个。 所以我让它符合你的例子。但是如果你应该匹配七个字符,你可以将框 2 匹配更改为 (\w{7})

    但下面的正则表达式匹配您提供的字符串。

    _New=([A-Z]{2})_(\w{6})_(JAVA.+)
    

    你在第 1-3 组中得到匹配框 1-3

    希望对你有帮助

    【讨论】:

    • 谢谢丹尼尔。它对我有用。是否可以在 Sql 查询中实现相同的功能。实际上这个文本是我需要匹配的数据库中一列的值
    • 正则表达式匹配文本。如果您需要执行 sql 查询,您只需编写一个 sql 查询来匹配您需要的 db 值。如果答案对您有效,如果您可以将我的答案标记为“已接受”,我会很高兴
    【解决方案2】:

    这与丹尼尔的答案相似,但我对您的规范的解释略有不同。

    _NEW=[a-zA-Z]{2}__[a-zA-Z0-9]{7}(_JAVA).*
    

    这个正则表达式匹配 "_NEW=",

    然后是 2 个大写或小写字母

    然后是“__”,因为你需要 2 个下划线

    然后任何大写/小写字母或数字 7 次(如果需要,显然更改为 6)

    然后是“_JAVA”

    然后是任何数量的其他任何东西,包括其他任何东西。即:“_JAVA”

    这里是proof/visualisation

    【讨论】:

    • 感谢您的回复。在sql查询中可以做到这一点吗?
    • 这是可能的,尽管这超出了这个问题的范围。如果您想查看它,您可以发布另一个问题。 (如果我的回复对您有帮助,请将其设为已接受的答案 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    相关资源
    最近更新 更多