为了账号安全,请及时绑定邮箱和手机立即绑定

此查询有效,但我想知道是否可以缩短它

此查询有效,但我想知道是否可以缩短它

PHP
喵喔喔 2021-11-05 10:26:55
我正在尝试从字符串字段中提取最后一个单词...如果它是月份的名称,我想将其转换为 Number 中的月份。它正在工作,但时间太长了。我们可以包含“不正确的日期时间值”或日期格式错误然后显示空白?如果然后其他不工作...case when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) = "January" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) = "February" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1))= "March" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) = "April" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) = "May" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) = "June" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) = "July" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) = "August" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) = "September" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) = "October" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) = "November" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))when (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) = "December" then (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))else nullend  as `Last_NuM_Month`此示例正在运行,但时间太长。
查看完整描述

2 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

实际上,您可以将代码减少到以下行:

SELECT (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M'))) AS `Last_NuM_Month`;

如果您的月份名称无效,例如“februember”,则MySQL 的MONTH()将返回NULLtbl_StringsList.items


查看完整回答
反对 回复 2021-11-05
?
皈依舞

TA贡献1851条经验 获得超3个赞

你可以改成这样:


CASE 

    WHEN (SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)) IN 

    (

        'January', 'February', 'March', 'April', 'May', 'June', 

        'July', 'August', 'September', 'October', 'November', 'December'

    )

    THEN (MONTH(str_to_date((SUBSTRING_INDEX(tbl_StringsList.items, " ", -1)),'%M')))

    ELSE NULL

END AS `Last_NuM_Month`

在雷克斯特测试


查看完整回答
反对 回复 2021-11-05
  • 2 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信