• Danny Ocean (7/1/2013)


    Good question. But i never feel to use "Bitwise AND" (&) in real working scenario. It will good, if anyone come with some real working example. 🙂

    Hi, another example where BIT comparison is useful, msdb..sysschedules keeps the freq_interval in bitwise value 🙂

    use [msdb]

    go

    create table #DaysOfWeekBitWise(

    [bitValue] [tinyint] NOT NULL PRIMARY KEY,

    [name] [varchar](10) NULL,

    )

    go

    insert into #DaysOfWeekBitWise ([bitValue], [name])

    values (1, N'Sunday')

    , (2, N'Monday')

    , (4, N'Tuesday')

    , (8, N'Wednesday')

    , (16, N'Thursday')

    , (32, N'Friday')

    , (64, N'Saturday')

    go

    select j.name

    , case when j.enabled = 1 then 'Yes' else 'No' end as enabled

    , jsch.next_run_date

    , jsch.next_run_time

    --, jst.*

    , s.freq_interval

    , ISNULL( STUFF( (SELECT N', ' + name FROM #DaysOfWeekBitWise AS B WHERE B.bitValue & s.freq_interval = B.bitValue FOR XML PATH('') ), 1, 2, '' ), 'None' ) AS backup_schedule

    from msdb.dbo.sysjobs as j

    left join msdb.dbo.sysjobschedules as jsch

    on jsch.job_id = j.job_id

    left join msdb.dbo.sysschedules as s

    on s.schedule_id = jsch.schedule_id

    order by j.name

    go

    drop table #DaysOfWeekBitWise

    go

    Cheers