为 DEFAULT SQL 获取 null

Get null for DEFAULT SQL

我有一个 table,其中包含插入 base64 图像作为个人资料图片的候选详细信息。当我从 table 中获取大量候选人列表时,个人资料图片占用了太多 space。对于那些不上传个人资料照片的人,我有一个默认的 base64 图片作为个人资料照片。如果候选人的个人资料图片是默认的,我想要的是取空。 我的查询是这样简单的,

select 
    Name,
    DOB, 
    case when profilepic is default then NULL else profile pic 
from candidates

代码在使用默认值时显示错误,但在我使用时工作正常 null 代替 DEFAULT

大致如下:

select 
Name
,DOB
,case when profilepic = (SELECT COLUMN_DEFAULT FROM INFORMATION_SCHEMA.COLUMNS  WHERE COLUMN_NAME='profilepic' and TABLE_NAME='candidates') then NULL else profilepic END 
from candidates

您可能需要稍微分析一下 suqbuery。

应该这样更有效率:

SELECT Name, DOB,
       CASE WHEN profilepic = T.COLUMN_DEFAULT 
                THEN NULL 
            ELSE profilepic 
       END 
FROM   candidates
       CROSS APPLY (SELECT COLUMN_DEFAULT 
                    FROM   INFORMATION_SCHEMA.COLUMNS  
                    WHERE  COLUMN_NAME = 'profilepic' and 
                           TABLE_NAME = 'candidates' and
                           TABLE_SCHEMA = 'dbo' ) AS T

假设您的 table 在 SQL 服务器数据库默认架构 (dbo) 中。