为 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) 中。
我有一个 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) 中。