根据其他列

时间:2016-02-17 18:39:01

标签: sql sql-server

正在进行某种瞻礼日或特殊日历。我有一个视图(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)+'%')

1 个答案:

答案 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)+'%')