首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Server查询转换为DB2

将Server查询转换为DB2
EN

Stack Overflow用户
提问于 2022-05-25 15:25:09
回答 1查看 138关注 0票数 -1

我正在尝试将下面的SQL server查询转换为DB2或mysql...Can,请在这里帮助我。

代码语言:javascript
复制
SELECT 
    *,
    CASE 
        WHEN PATINDEX('%S%LD%', orderstatus) > 0 
            THEN 'Sold'
        WHEN PATINDEX('%STOCK%', orderstatus) > 0 
             OR PATINDEX('%STK%[0-9]/[0-9]%', orderstatus) > 0 
            THEN 'Stock' 
        ELSE'' 
    END AS comment,
    CASE 
        WHEN PATINDEX('%[0-9]/[0-9]%', orderstatus) > 0 
             OR CHARINDEX('*', orderstatus) > 0 
             OR CHARINDEX('BAM', orderstatus) > 0
            THEN 'BAM' 
            ELSE'' 
    END AS BAMYN,
    CASE 
        WHEN PATINDEX('%[0-9]/[0-9]%', orderstatus) > 0 
            THEN CAST(SUBSTRING(orderstatus, CHARINDEX('/', orderstatus) - 2, 5) + '/2022' AS DATE)
            ELSE orddate 
    END AS soldorstockdate 
FROM 
    input

想知道CHARINDEXPATINDEX将如何在DB2或mysql中被取代?

查询尝试:

代码语言:javascript
复制
SELECT a.*, CASE WHEN REGEXP_COUNT(ORDERSTATUS,'SLD')>0 THEN 'Sold' 
  WHEN REGEXP_COUNT ('%STOCK%',ORDERSTATUS)>0 OR REGEXP_COUNT ('STK[0-9]/[0-9]',ORDERSTATUS)>0 THEN 'Stock' ELSE'' END AS comment 
         ,CASE WHEN REGEXP_COUNT('[0-9]/[0-9]',ORDERSTATUS)>0 OR LOCATE('*',ORDERSTATUS)>0 OR LOCATE('BAM',ORDERSTATUS)>0
               THEN 'BAM' ELSE'' END AS BAMYN 
         ,CASE WHEN REGEXP_COUNT('[0-9]/[0-9]',ORDERSTATUS)>0 
               THEN CAST(SUBSTRING(ORDERSTATUS,LOCATE('/',ORDERSTATUS)-2,5) AS DATE)
               ELSE ORDDATE  END AS soldorstockdate 


FROM input  a

我得到以下错误(作为400)

SQL 2201S:用于函数SQ20558的REGEXP_COUNT正则表达式字符串无效。

EN

回答 1

Stack Overflow用户

发布于 2022-05-25 17:01:04

在DB2LUW中,离CHARINDEX最近的可能是找出

如果您的DB2服务器平台和DB2版本(您总是需要知道,z/os,i系列,linux/unix/windows/ 提取 )支持这一点,您也可以使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72380395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档