我需要mysql查询来删除第一次出现数字后的所有字符和数字reGEXP_REPLACE在mysql中不起作用

问题描述 投票:0回答:1

我的商品名称包含数字和特殊字符,所以我想在第一次出现数值后删除所有内容

商品名称 预计o/p
优泌林 R、优泌林 R 笔 优泌林R
多瑞吉-100、多瑞吉-12、多瑞吉-25、多瑞吉-50、多瑞吉-75 多瑞吉
URSO 250,URSO FORTE 乌尔索

SELECT 
    oe.id,
    oe.exclusivity_id,
    oe.exclusivity_date AS expiry_date,
    oe.nda_no,
    oe.prod_no,
    '' AS comment,
    oe.exclusivity_code,
    opr.inn_group_id,
    ig.description inn_name,
    opr.trade_name AS trade_name, 
FROM
    grid_file_ob_exclusivity oe
        JOIN
    grid_file_ob_product opr ON opr.id = oe.product_id
        JOIN
    grid_inn_group ig ON ig.id = opr.inn_group_id
WHERE
    oe.exclusivity_date IS NOT NULL
        AND oe.exclusivity_date != '0000-00-00'
        AND opr.inn_group_id <> 0
        AND oe.de_active = 'Y'
        AND oe.exclusivity_code NOT LIKE 'ODE%'

ORDER BY oe.prod_no ASC;



我尝试过 reGEXP_REPLACE 和子字符串,这在 mysql 中不起作用

SELECT CASE 
        WHEN INSTR(trade_name, '0') > 0 
        THEN SUBSTRING(trade_name, 1, INSTR(trade_name, '0')-1) 
        ELSE trade_name 
        END 
    AS result 
FROM grid_file_ob_exclusivity;

所以我需要通过在 mysql 选择查询中第一次出现数字后删除内容来进行预期的交易

mysql
1个回答
0
投票

你可以尝试:

WITH grid_file_ob_exclusivity (trade_name) AS (
    VALUES
        ROW('HUMULIN R, HUMULIN R PEN'),
        ROW('DURAGESIC-100, DURAGESIC-12, DURAGESIC-25, DURAGESIC-50, DURAGESIC-75'),
        ROW('URSO 250, URSO FORTE')
)
SELECT trade_name, REGEXP_SUBSTR(trade_name, '[^0-9\-,]*') AS result
FROM grid_file_ob_exclusivity;

这是一个db<>小提琴

© www.soinside.com 2019 - 2024. All rights reserved.