How does this CASE expression reach the ELSE clause?

前端 未结 3 1359
无人及你
无人及你 2020-11-29 07:18

I need to load some test data into the Channel field on my Account table. The Channel can be one of 10 different values, so I thought I\'d randomly assign the Channel one o

3条回答
  •  囚心锁ツ
    2020-11-29 08:14

    The written form of the query is expanded to:

    Channel = 
          CASE
            WHEN ABS(CHECKSUM(NewId())) % 10 = 0 THEN 'Baby Only'
            WHEN ABS(CHECKSUM(NewId())) % 10 = 1 THEN 'Club'
            WHEN ABS(CHECKSUM(NewId())) % 10 = 2 THEN 'Drug'
            WHEN ABS(CHECKSUM(NewId())) % 10 = 3 THEN 'Food'
            WHEN ABS(CHECKSUM(NewId())) % 10 = 4 THEN 'Internet'
            WHEN ABS(CHECKSUM(NewId())) % 10 = 5 THEN 'Liquidators'
            WHEN ABS(CHECKSUM(NewId())) % 10 = 6 THEN 'Mass'
            WHEN ABS(CHECKSUM(NewId())) % 10 = 7 THEN 'Military'
            WHEN ABS(CHECKSUM(NewId())) % 10 = 8 THEN 'Other'
            WHEN ABS(CHECKSUM(NewId())) % 10 = 9 THEN 'Speciality'
            ELSE '*NONE*'            -- How is this ever getting reached?
          END
    

    A new value for NEWID is used in each test.

提交回复
热议问题