小编Mik*_*nes的帖子

如何确定列中是否存在连字符 (-)

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)的破折号相匹配。

sql-server sql-server-2016 string-searching

4
推荐指数
2
解决办法
6771
查看次数

按历史“本月最后一天”过滤表

我有一个每日附加表,我需要一个公式来将表结果过滤到任何给定历史月份的最后一天。例如:

桌子:

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)

sql-server date sql-server-2016 date-math

3
推荐指数
1
解决办法
223
查看次数

转换日期并按年份过滤

我有一个“yyyymmdd”格式的日期字段,我需要使用该字段按年份过滤查询。

例如,在我的表中有一个“发布日期”字段,格式为“20180401”,我需要将查询过滤为仅包含 2018 年的记录。

sql-server type-conversion cast date sql-server-2016

1
推荐指数
1
解决办法
276
查看次数