在SQL指令码中,我尝试根据字串值字段中的年份取得数据。每年数据表都会为目前的年份新增一列。因此,ID_TYPE_NAME数据行的数据列具有:
“MS-DRG V38(2021财年)”“MS-DRG V39(2022财年)”等等......
作为SQL的新手,我希望下面这样的公式能起作用:
WHERE ID_TYPE_NAME LIKE 'MS-DRG%'
and ID_TYPE_NAME LIKE YEAR(CURDATE())
但我收到一条信息
CURDATE不是可识别的内置函数名
我可以使用like吗?或者我需要走不同的路线吗?如果我必须走不同的路线,我使用什么方法来实现这一点?
2条答案
按热度按时间qgelzfjb1#
LIKE
参数没有什么神奇的,它只是一个常规字符串,其中某些字符(即%
和_
)被作为通配符处理。您关于CURDATE
没有被识别为内置函数的错误是因为您调用了一个不存在的函数,就像您运行select pink_elephants()
一样。要使用符合您需要的模式编写字符串,可以使用以下工具:
CURRENT_TIMESTAMP
以获取当前日期和时间(这是标准SQL的一个功能,在许多方言中都可用)YEAR()
以提取年份部分CAST()
将年份(整数)转换为文本+
连接子字符串所有人一起:
Demo
rjee0c152#
我们可以使用
CONCAT
来构建应该找到的字符串,如下所示:YEAR
仅从整个当前日期开始计算年份。因此,
LIKE
条件将创建为:MS-DRG%2022)
或者,我们可以更具体地这样做:
此查询的
LIKE
条件将创建为:MS-DRG%FY 2022)
这两个查询都只会从您的范例数据传回这个结果:
MS-DRG V39 (FY 2022)
试用:db<>fiddle