正在进行某种瞻礼日或特殊日历。我有一个视图(VSearchHoly)有三列:
hday_name(只是名字),hday_date(dd.mm.yyyy),hday_year(1或0)。
如果此行中的hday_year为0,我需要创建一个程序来查找某些日期或名称,并在hday_date(至dd.mm)中切断年份。
这是我的搜索程序,但我不知道如何根据hday_year缩短部分日期
CREATE PROCEDURE PHolySearch @holy_target VARCHAR(100)
AS
SELECT *
FROM VSearchHoly
WHERE hday_name LIKE ('%'+RTRIM(@holy_target)+'%')
OR hday_date LIKE ('%'+RTRIM(@holy_target)+'%')
答案 0 :(得分:0)
您需要使用CASE,SUBSTRING和某种形式的CAST。这样的事情应该有效:
SELECT
hday_name
,CASE WHEN hday_year in (0,1) THEN CAST((DAY(hday_date) AS CHAR(2)) + CAST(YEAR(haday_date) as CHAR(2)) ELSE hday_date END as hday_date_modified
FROM
VSearchHoly
WHERE
hday_name LIKE ('%'+RTRIM(@holy_target)+'%')
OR hday_date LIKE ('%'+RTRIM(@holy_target)+'%')