我正在尝试将下面的SQL server查询转换为DB2或mysql...Can,请在这里帮助我。
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想知道CHARINDEX和PATINDEX将如何在DB2或mysql中被取代?
查询尝试:
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正则表达式字符串无效。
https://stackoverflow.com/questions/72380395
复制相似问题