在CASE
表达式中,我试图在文本列中搜索以识别连字符 (-):
CASE
WHEN SUBSTRING(al.ALT_ADDRESS,1,1) IN('1','5','7')
AND al.NEW_ADDRESS CONTAINS '-'
THEN CONCAT(al.ALT_ADDRESS,al.NEW_ADDRESS)
Run Code Online (Sandbox Code Playgroud)
连字符可以位于列中的任何位置,因此我只需要知道它是否存在,而不管它在列中的实际位置。
我目前正在使用与@Josh 提供的完全相同的代码( LIKE '%-%'
),但它不起作用,因为它没有为我知道它“应该”的几个特定实例返回正确的数据。确切的文字ALT_ADDRESS
是:“2754 Churchill Circle”。确切的文字NEW_ADDRESS
是:“O-89421”。但是,返回的结果不包括NEW_ADDRESS
(O-89421)。
我已经确认破折号NEW_ADDRESS
确实与我使用搜索(ASCII 45)的破折号相匹配。
我有一个每日附加表,我需要一个公式来将表结果过滤到任何给定历史月份的最后一天。例如:
桌子:
DwDate Balance
20181231 $10
20190131 $80
20190228 $75
20190331 $50
Run Code Online (Sandbox Code Playgroud)
99% 的时间我只需要MAX(DwDate)
,这将是:
@MaxDate = (SELECT MAX(DwDate) FROM dbo.TABLE)
Run Code Online (Sandbox Code Playgroud)
但是,有时我需要一个可以让我回到 1 或 2 个月的公式:
@MaxDate - 2 Months
Run Code Online (Sandbox Code Playgroud) 我有一个“yyyymmdd”格式的日期字段,我需要使用该字段按年份过滤查询。
例如,在我的表中有一个“发布日期”字段,格式为“20180401”,我需要将查询过滤为仅包含 2018 年的记录。