我的商品名称包含数字和特殊字符,所以我想在第一次出现数值后删除所有内容
商品名称 | 预计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 选择查询中第一次出现数字后删除内容来进行预期的交易
你可以尝试:
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<>小提琴。