SQL - 如何搜索WHERE但忽略前两个字符

时间:2014-07-31 14:07:20

标签: sql

我需要执行日期搜索,但数据是格式为

的字符串

'日/月/年'

我只想搜索' mm / yyyy'

例如,我希望所有记录都包含' 07/2014'不管是哪一天?

我确定它的简单内容无法弄清楚

修改: 看起来格式是MM / DD / YYY 看起来我刚刚使用了这个分类:

RIGHT(BookedDate,5) = '/2014'
AND LEFT (BookedDate,2) = '7/'

全部谢谢:)

5 个答案:

答案 0 :(得分:2)

如果您的字符串格式为dd/mm/yyyy,则01/09/2014可以正确使用

declare @val as varchar(10)
Set @val='1/2/2014'
RIGHT(@val,7)

如果您不确定格式,但知道有/可以搜索它:

declare @val as varchar(10)
Set @val='1/2/2014'
select right(@val,len(@val)-patindex('%/%',@val))   

答案 1 :(得分:1)

myfield like '%/07/2014'

请注意,由于通配符(%)放在查询的开头,因此不会使用索引(如果存在)。这将始终是一个全表扫描。

答案 2 :(得分:0)

如果您将日期值存储在基于character的列中,那么 jyparask 答案就足够了,但如果您将其存储在基于date/time的列中,然后使用日期/时间函数或间隔:

WHERE
  myDateColumn >= '01/07/2014'
  AND myDateColumn < '01/08/2014'

以上WHERE条件表示:2014年7月的所有值。

答案 3 :(得分:0)

这将确保,因为它是一个字符串,如果值超过预期,前三个字符将始终被删除。

  SELECT RIGHT(field, LEN(field)-3) FROM database

答案 4 :(得分:0)

这感觉非常糟糕。如果使用Date而不是String,很可能会有大量的优化可以由数据库自动完成查询。 如果您的数据库增长,这肯定会成为某种瓶颈,它必须询问并解析每一行,以确定它是否符合您的请求。