使用MySQL更改值输出/修剪某个值前后的所有文本

  • 本文关键字:文本 修剪 MySQL 输出 使用 mysql
  • 更新时间 :
  • 英文 :


当前正在尝试在MySQL中转换一些文本。可能需要一些帮助,因为我在尝试使用一些聚合函数时遇到了一些问题。

我有一个列stay,它有我可以在大部分情况下使用的值,但我有输出为More than 100 Days的实例。我目前正在努力摆脱除了100以外的一切。我试过使用TRIM函数,但运气不好。我只能去掉More thanDays中的一个,但不能同时去掉这两个。我也知道我不能使用TRIM(BOTH),因为100之前和之后的文本不同。

有什么想法吗?

这可能会让人觉得很不正统,但如何使用日期时间函数:

SELECT t.stay,
-- actual logic to fetch the digits
(DATEDIFF(
STR_TO_DATE(CONCAT((@var_some_year := 1000), t.stay),
-- the pattern
'%YMore than %j Days'
),
MAKEDATE(@var_some_year, 1)) + 1
) AS Digits
FROM
(
-- mimicinf your table
SELECT CONCAT('More than ', (@var:= @var + 1), ' Days') AS stay
FROM (SELECT @var:= 0) twofold0
JOIN (SELECT NULL UNION ALL SELECT NULL) twofold1
JOIN (SELECT NULL UNION ALL SELECT NULL) twofold2
JOIN (SELECT NULL UNION ALL SELECT NULL) twofold3
JOIN (SELECT NULL UNION ALL SELECT NULL) twofold4
JOIN (SELECT NULL UNION ALL SELECT NULL) twofold5
JOIN (SELECT NULL UNION ALL SELECT NULL) twofold6
JOIN (SELECT NULL UNION ALL SELECT NULL) twofold7
JOIN (SELECT NULL UNION ALL SELECT NULL) twofold8
JOIN (SELECT NULL UNION ALL SELECT NULL) twofold9
JOIN (SELECT NULL UNION ALL SELECT NULL) twofold10
) t
;

似乎适用于最多4位数的模式。

最新更新