【问题标题】:SQL / Celonis - where field only contains just numeric, remove anything elseSQL / Celonis - 字段仅包含数字,删除其他任何内容
【发布时间】:2021-04-28 15:25:05
【问题描述】:

在一个字段中,我想保留那些只有 100000 到 999999 之间的数字的字段

此字段混合了数字、字母数字、字母字符。

如果字段中有数字,则此功能将保留,例如将 abc123 保留在我希望删除的位置

where some_column NOT LIKE '%[^0-9]%'

附加 - Celonis 等效项?

Gordon 提供了 SQL Server 编码以完全按照预期执行此操作。

我希望这可以在 Celonis 中使用,但不支持 try_convert 函数。还有其他方法吗?

where try_convert(int, some_column) between 100000 and 999999

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • SQL Server? MySQL? PostgreSQL? DB2?甲骨文? SQLite?等等等等?

标签: sql sql-server numeric


【解决方案1】:

首先,很高兴知道 Celonis 使用 Vertica SQL 来收集事件。 Vertica 有一些特定的功能,您可以在https://www.vertica.com/docs/ 找到。

也就是说,我不确定我是否理解您的问题,但我认为 REGEXP_ILIKE 是您可以使用的,其中 '[0-9]' 可能是您要检查的表达式如果您的字段包含数值。

如果您想提取数字本身(例如检查它是否在 100000 和 999999 之间,请使用 then REGEXP_SUBSTR

您的代码将类似于: WHERE REGEXP_SUBSTR(some_column, [0-9]) BETWEEN 100000 AND 999999

【讨论】:

    【解决方案2】:

    您的语法表明您正在使用 SQL Server。如果是这样,请尝试:

    where try_convert(int, some_column) between 100000 and 999999
    

    【讨论】:

    • Briliant Gordon,感谢它在 SQL Server 中的工作。现在我需要这个函数的 Celonis 版本,因为不支持 try_convert。
    • @Rockshah。 . .此问题标记为 SQL Server,并且此代码适用于所有受支持的 SQL Server 版本。如果您有不同的问题(例如不同的数据库),请提出问题。
    猜你喜欢
    • 2011-11-24
    • 1970-01-01
    • 2014-10-29
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    相关资源
    最近更新 更多